从一个表中选择所有在另一表中不存在的记录?

时间:2020-02-26 15:58:14

标签: sql

表A

B列:AA,BB,CC,DD,EE,FF

表C

D列:AA,BB,CC,GG,KK,MM

我需要表A中的数据,而表C中没有这些数据

输出应为:DD,EE,FF

尝试以下内容:

Select A.B from A
Left Join C on A.B = C.D
where A.B not in(Select C from D)

3 个答案:

答案 0 :(得分:2)

只是不加入联接

select B
from A
where B not in(Select C from D)

您正试图使其复杂化

答案 1 :(得分:1)

not exists浮现在脑海:它可能not in更有效,并且null是安全的,而not in不是(如果not in子查询返回的任何值为null,则将返回外部查询中的所有行,这大概不是您想要的):

select a.*
from a
where not exists (select 1 from c where a.b = c.d)

或者,按照您原始查询的精神,您可以使用反left join

select a.*
from a
left join c on a.b = c.d
where c.d is null

答案 2 :(得分:0)

这是反联接的定义:

display: 'flex'