I have two tables with some columns being the same:
TABLE A
| Col1 | Col2 | Col3 | +------+------+------+ | 1 | aa | ccc | | 2 | null | ccc | | null | bb | null |
TABLE B
|Col1 | Col2 | Col3| Col4 | +------+-------+-----+------+ | 1 | aa | ccc | aaaa | | 2 | null | ccc | cccc | | null | bb | null | sss | | 4 | bb | null | ddd |
I’d like to return the following:
|Col1 | Col2 | Col3| Col4 | +------+-------+-----+------+ | 4 | bb | null | ddd |
How do I check what rows from table B are in table A and also return Col4 (from table B) where they match in the query.
I was using EXCEPT which worked great but now I need to have the outputs of Col4 in the returned query results.
Thanks.
Advertisement
Answer
Something like this?
SELECT Col1, Col2, Col3, Col4 FROM TableB WHERE NOT EXISTS ( SELECT 1 FROM TableA WHERE TableA.Col1 IS NOT DISTINCT FROM TableB.Col1 AND TableA.Col2 IS NOT DISTINCT FROM TableB.Col2 AND TableA.Col3 IS NOT DISTINCT FROM TableB.Col3 )
(Using IS NOT DISTINCT FROM to say that columns with null are equal to each other.)