How do I fill the null values in Table A using values from Table B while keeping all other columns/rows intact?
Table A
name | dept | job |
---|---|---|
jon | null | analyst |
mary | null | supervisor |
lucy | null | actuary |
mark | retail | manager |
cindy | retail | sales |
Table B
name | dept | job |
---|---|---|
jon | hr | null |
mary | hr | null |
lucy | finance | null |
attempts to use joins has incorrect results due to having to select which columns show in final table. ex:
SELECT a.name, b.dept, a.job
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.name=b.name
will show
name | dept | job |
---|---|---|
jon | hr | analyst |
mary | hr | supervisor |
lucy | finance | actuary |
mark | null | manager |
cindy | null | sales |
I've tried out different types of joins, but can't seem to figure it out. Thanks in advance!
CodePudding user response:
Use COALESCE()
to combine two values that could be null.
For example:
SELECT a.name,
coalesce(a.dept, b.dept) as dept,
coalesce(a.job, b.job) as job
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.name=b.name