想象一下,我有这张桌子:
我需要的是获取A中存在但不存在于B中的数据,在这种情况下,我的SELECT必须返回“2”。
我以前做过,但是知道我不记得怎么做了。我想它是这样的:
SELECT a.*
FROM A as a
LEFT JOIN B AS b ON b.column = a.column
但它不起作用。请有人帮帮我吗?
提前致谢。
答案 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)