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

Ser*_*era 4 sql select join exists left-join

想象一下,我有这个表: 这张桌子.

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

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

SELECT a.*
FROM A as a
LEFT JOIN B AS b ON b.column = a.column
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有谁可以帮助我吗?

提前致谢.

Dan*_*Dan 12

你刚刚错过了一个过滤器:

SELECT a.*
FROM A as a
LEFT JOIN B AS b ON b.column = a.column
WHERE B.column IS NULL
Run Code Online (Sandbox Code Playgroud)


D S*_*ley 5

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

SELECT a.*
FROM A as a
WHERE NOT EXISTS(SELECT NULL FROM B WHERE b.column = a.column)
Run Code Online (Sandbox Code Playgroud)


mar*_*ijn 5

以下应该适用于大多数数据库类型

select *
from A
where A.column not in (select column from B)
Run Code Online (Sandbox Code Playgroud)