tags:

views:

31

answers:

4
TableA 
id, name
1, abc
2, cde
3, def


TableB
id, TableA_id, topic
1, 1, blah 
2, 1, blah again
3, 2, abcdef

I want to select all of those records from TableA which dont have any references in TableB. How do I do it in Mysql?

Thanks a lot.

+4  A: 

You can use LEFT JOIN and select these records which don't have matching record in B.

SELECT
  TableA.*
FROM
  TableA
  LEFT JOIN
    TableB 
  ON
    TableB.TableA_id = TableA.id
WHERE
  TableB.id IS NULL
Grzegorz Gierlik
oh I was trying the left join but I missed the where clause .. thanks a lot for the answer.
A: 

SELECT * FROM TableA WHERE id NOT IN (SELECT TableA_id FROM TableB)

Tim
+1  A: 
SELECT TableA.*
FROM TableA
LEFT JOIN TableB ON (TableA.id = TableB.TableA_id)
WHERE TableB.id IS NULL
cballou
+1  A: 
Select a.*
From TableA a
Left Outer Join TableB b on b.TableA_id=a.id
Where b.id is NULL
brendan