选择A中存在但不存在于B中的数据

时间:2014-11-19 14:13:57

标签: sql select join left-join exists

想象一下,我有这张桌子: this tables

我需要的是获取A中存在但不存在于B中的数据,在这种情况下,我的SELECT必须返回“2”。

我以前做过,但是知道我不记得怎么做了。我想它是这样的:

SELECT a.*
FROM A as a
LEFT JOIN B AS b ON b.column = a.column

但它不起作用。请有人帮帮我吗?

提前致谢。

3 个答案:

答案 0 :(得分:11)

您只是错过了一个过滤器:

SELECT a.*
FROM A as a
LEFT JOIN B AS b ON b.column = a.column
WHERE B.column IS NULL

答案 1 :(得分:5)

如果B可能有多个匹配A的行,那么此查询会更合适:

SELECT a.*
FROM A as a
WHERE NOT EXISTS(SELECT NULL FROM B WHERE b.column = a.column)

答案 2 :(得分:2)

以下内容适用于大多数数据库类型

select *
from A
where A.column not in (select column from B)