【发布时间】:2021-02-01 16:04:23
【问题描述】:
【问题讨论】:
-
这些不是多个“键”而是单个“复合键”。
标签: sql subquery left-join anti-join
【问题讨论】:
标签: sql subquery left-join anti-join
如果要反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) 上的索引。
【讨论】:
where b.key_1 is null,但随后它按预期工作。