I have two tables:
TableA
ID Name -- ---- 1 aaa 2 bbb 3 ccc 4 ddd
TableB
ID Name -- -------- 3 WWXXYYZZ
I want to select from both tables, but skip the rows which exist in TableB. The result should look like this:
ID Name -- -------- 1 aaa 2 bbb 3 WWXXYYZZ 4 ddd
I have tried union
and join
but did not figure out how to achieve this.
-- Did not work select * from TableA union select * from TableB -- Did not work select * from ( select * from TableA ) x join ( select * from TableB ) y on x.ID = y.ID
Advertisement
Answer
You could left join b
on to a
, and use coalesce
to prefer b
‘s rows:
SELECT a.id, COALESCE(b.name, a.name) AS name FROM a LEFT JOIN b ON a.id = b.id