Six*_*Bit 51 sql select join anti-join
我有两张桌子连在一起.
A有很多B.
通常你会这样做:
select * from a,b where b.a_id = a.id
Run Code Online (Sandbox Code Playgroud)
从b中记录的所有记录中获取记录.
如何获得b中没有任何内容的记录?
alb*_*ein 85
select * from a where id not in (select a_id from b)
Run Code Online (Sandbox Code Playgroud)
或者像这个帖子中的其他人说:
select a.* from a
left outer join b on a.id = b.a_id
where b.a_id is null
Run Code Online (Sandbox Code Playgroud)
Jos*_*son 18
select * from a
left outer join b on a.id = b.a_id
where b.a_id is null
Run Code Online (Sandbox Code Playgroud)
另一种方法:
select * from a where not exists (select * from b where b.a_id = a.id)
Run Code Online (Sandbox Code Playgroud)
如果您需要将其他"where"子句附加到内部查询,则"exists"方法很有用.