sqlselectjoinanti-join

How do I find records that are not joined?


I have two tables that are joined together.

A has many B

Normally you would do:

select * from a,b where b.a_id = a.id

To get all of the records from a that has a record in b.

How do I get just the records in a that does not have anything in b?


Solution

  • 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