0

我有两张桌子。A 和 B。我试图找出一种方法来在我的选择查询中添加一个列,该列返回 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

我想基本上“SELECT ID, Title, (Exists?) FROM 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 新手,我一直在寻找使用“如果存在”或任何其他方式来解析它的方法,但我并没有真正找到我想要的东西。

4

3 回答 3

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
于 2013-08-02T15:56:47.773 回答
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

SQLFiddle 链接

于 2013-08-02T15:57:56.970 回答
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
于 2013-08-02T15:53:16.060 回答