left semi join 的结果只返回左表的列,右表只能放在 join condition 中用于过滤判断,可以理解为 in 的替代品
select *
from a left semi join b
on a.id = b.id
--- 等价于
select *
from a
where a.id in
(select b.id from b)
left anti join 与 left semi join 相反,返回不满足 join condition 的结果,可以理解为 not in 的替代品
select *
from a left anti join b
on a.id = b.id
--- 等价于
select *
from a
where a.id not in
(select b.id from b)