How do I find records that are not joined?

select * from a
left outer join b on a.id = b.a_id
where b.a_id is null

Another approach:

select * from a where not exists (select * from b where b.a_id = a.id)

The "exists" approach is useful if there is some other "where" clause you need to attach to the inner query.


The following image will help to understand SQL LET JOIN :

enter image description here


select * from a where id not in (select a_id from b)

Or like some other people on this thread says:

select a.* from a
left outer join b on a.id = b.a_id
where b.a_id is null