首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 合成一条查询话语

2012-12-17 
sql 合成一条查询语句表Aidid2111222表Bidid2111333表Cid2text111aaa22bbb33ccc查询 :给出 id 值 是 3先从

sql 合成一条查询语句
表A

   id    id2
    1    11
    2    22

表B 

    id   id2
     1   11
     3   33


表C

    id2  text1
     11  aaa
     22  bbb
     33  ccc


查询 :给出 id 值 是 3

      先从 A 表 查询 id =3 的 id2 的值  如果 A表里没有 从 B表里查询
       
      查到后 从 C表 查询 text1 的值 

1:      select id2 from A where id = 3 ( 得到 id2 值 如果没有 查询 B 表)

2:       select id2 from B where id = 3 (得到 id2 值)

3:       select text1 from C where id2 = 33


上面几步写成一条if else 查询语句怎么写 ?? 
    
    

[最优解释]
Select a.id2,b.id2 From a FULL join b on a.id = b.id  Where b.id =3 or a.id =3



[其他解释]
declare @id int
if (select id2 from a where id=3) is null
being
    select @id=id2 from B where id = 3
end
else 
begin
    select @id=id2 from a where id=3
end

select text1 from C where id2 = @id

[其他解释]

declare @id INT 
set id='3'

if exists(select id2 from A where id = @id)
     begin 
          select text1 from C where id2 =(select id2 from A where id = @id)
     end

else 
     begin
           select text1 from C where id2 =(select id2 from B where id = @id)
     end

[其他解释]
      先从 A 表 查询 id =3 的 id2 的值  如果 A表里没有 从 B表里查询
       
1:      select id2 from A where id = 3 ( 得到 id2 值 如果没有 查询 B 表)

2:      select id2 from B where id = 3 (得到 id2 值)


不好意思 就要这两句吧 写成一条查询语句 一会结贴
[其他解释]
 



SELECT C.text1 FROM (
SELECT id=CASE WHEN A.Id IS NULL THEN B.id ELSE A.id end,id2=CASE WHEN a.ID IS NULL THEN B.ID2 else A.Id2 END FROM A full JOIN B ON A.Id=B.Id
)A JOIN C ON A.id2=C.Id2
WHERE id=3A


[其他解释]
C.text1 FROM (
SELECT id=CASE WHEN A.Id IS NULL THEN B.id ELSE A.id end,id2=CASE WHEN a.ID IS NULL THEN B.ID2 else A.Id2 END FROM A full JOIN B ON A.Id=B.Id
)A JOIN C ON A.id2=C.Id2
WHERE id=3

热点排行