1

我想在两个表上实现反连接,但使用两个键,以便结果是表 A 中不包含表 B 中的 [key_1, key_2] 组合的所有行。如何在 SQL 中编写此查询?

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

如果你想要一个反left join,逻辑是:

select a.*
from tablea a 
left join tableb b on b.key_1 = a.key_1 and b.key_2 = a.key_2
where b.key_1 is null

至于我,我喜欢用 来实现这样的逻辑not exists,因为我发现它更能表达意图:

select a.*
from tablea a
where not exists (
    select 1 from tableb b where b.key_1 = a.key_1 and b.key_2 = a.key_2
)

not exists查询将利用tableb(key_1, key_2).

于 2020-10-18T20:13:25.623 回答