我有两张桌子。 A和B.我试图找出一种方法来在我的select查询中添加一个返回true或false的列,以确定B中是否存在记录。
Table A
ID Title
1 A
2 B
3 C
4 D
5 E
Table B
ID Detail
3 foo
4 foo
4 bar
4 barfood
我想基本上“选择ID,标题,(存在?)从A”返回
ID Title Exists
1 A False
2 B False
3 C True
4 D True
5 E False
表A的ID列始终是唯一的。表B的ID列可以有零个,一个或多个与表A的ID相关联。我不关心表B中的细节,我只想知道表B中是否至少有一条记录与表A的ID有关。
我是SQL的新手,我一直在寻找使用'if exists'或其他任何方法来解析它的方法,但我并没有真正找到我正在寻找的东西。
答案 0 :(得分:1)
如果您要添加名为“Exists”的列临时,请尝试此
select a.id, a.title,case when a.id=b.id then 'True' else 'False' end as Exists
from A a left outer join B b
on a.id = b.id
如果你已经将Exists列添加到表中,那么
select a.id, a.title,Exists=(case when a.id=b.id then 'True' else 'False')
from A a left outer join B b
on a.id = b.id
答案 1 :(得分:1)
可能有更有效的方法来实现它,但count和case语句的组合将起到作用:
select ID, Title,
case when
(select count(1) from B where ID = A.ID) = 0 then 'False'
else 'True'
end as 'Exists'
from A
答案 2 :(得分:0)
如果您离开加入表B,那么您将获得该信息
select a.id, a.title,
case
when b.id is null then 'false'
else 'true'
end
from a
left outer join b on a.id = b.id
group by a.id, a.title