求一SQL(在线等!)

davidtsui 2008-06-13 10:19:08
表A:
--------------------
ID Name Sexual
1 A 0
2 B 1
3 C 2
4 D 1
5 E 1

表B:
--------------------
SexualID SexualName
1 男
2 女


求一段SQL,可以查询出下面的结果!

ID Name Sexual
1 A 未知
2 B 男
3 C 女
4 D 男
5 E 男

谢谢大家!!

...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhwcd 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lgxyz 的回复:]
SQL code
SELECT A.ID,A.NAME,
CASE WHEN ISNULL(B.SexualName,'')='' THEN '未知'
ELSE B.SexualName
END AS SEXUAL
FROM A
LEFT JOIN B
ON A.SEXUAL=B.SexualID
/*
ID NAME SEXUAL
----------- ---- ------
1 A 未知
2 B 男
3 C 女
4 D 男
5 E 男

(所影响的行数为 5 行)
*/
[/Quote]
ChinaITOldMan 2008-06-13
  • 打赏
  • 举报
回复
用Case搞定吧
lgxyz 2008-06-13
  • 打赏
  • 举报
回复

SELECT A.ID,A.NAME,
CASE WHEN ISNULL(B.SexualName,'')='' THEN '未知'
ELSE B.SexualName
END AS SEXUAL
FROM A
LEFT JOIN B
ON A.SEXUAL=B.SexualID
/*
ID NAME SEXUAL
----------- ---- ------
1 A 未知
2 B 男
3 C 女
4 D 男
5 E 男

(所影响的行数为 5 行)
*/
yangyangxie 2008-06-13
  • 打赏
  • 举报
回复
hehe
lgxyz 2008-06-13
  • 打赏
  • 举报
回复

SELECT A.ID,A.NAME,B.SexualName AS SEXUAL
FROM A
LEFT JOIN B
ON A.SEXUAL=B.SexualID
/*
ID NAME SEXUAL
----------- ---- ------
1 A NULL
2 B 男
3 C 女
4 D 男
5 E 男

(所影响的行数为 5 行)
*/
zero8500 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 eave_zhu 的回复:]
select a.id,a.name,(select sexualname from 表b where a.sexual=b.sexualid) from 表a a
[/Quote]

这个应该可以了
sweetweiwei 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 davidtsui 的回复:]
楼上,我的表只是个范例。。。实际上表B比较复杂,所以麻烦请从表B获取值,谢谢!
[/Quote]
SELECT a.ID,a.Name,b.SexualName
from a inner join b on a.Sexual = b.SexualID
eave_zhu 2008-06-13
  • 打赏
  • 举报
回复
select a.id,a.name,(select sexualname from 表b where a.sexual=b.sexualid) from 表a a
davidtsui 2008-06-13
  • 打赏
  • 举报
回复
楼上,我的表只是个范例。。。实际上表B比较复杂,所以麻烦请从表B获取值,谢谢!
sweetweiwei 2008-06-13
  • 打赏
  • 举报
回复
--try
create table a
(
ID int,
Name char(1),
Sexual int
)
insert into a
select
1,'A',0 union select
2,'B',1 union select
3,'C',2 union select
4,'D',1 union select
5,'E',1
create table b
(
SexualID int,
SexualName nvarchar(10)
)
insert into b
select
1,N'男' union select
2,N'女'
SELECT a.ID,a.Name,case when a.Sexual = b.SexualID then b.SexualName else N'未知' end as N'Sexual '
from a left join b on a.Sexual = b.SexualID
结果
ID Name Sexual
----------- ---- ----------
1 A 未知
2 B 男
3 C 女
4 D 男
5 E 男

(5 row(s) affected)
dobear_0922 2008-06-13
  • 打赏
  • 举报
回复
select ID, Name
, Sexual=case Sexual when 1 then '男' when 2 then '女' else '未知' end
from A

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧