Consider table t1 which has these three columns among others:
| nation | state | region |
|---|---|---|
| x1 | ||
| x1 | y1 | |
| x1 | y1 | z1 |
and t2:
| nation | state | region | population |
|---|---|---|---|
| x1 | p1 | ||
| x1 | y1 | p2 | |
| x1 | y1 | z1 | p3 |
How do I join t1 and t2 to get the population column in t1?
This only works when none of them are null:
join on t1.nation=t2.nation and t1.state=t2.state and t1.region=t2.region
CodePudding user response:
MySQL has a "null-safe equals" operator <=> which is equivalent to standard SQL IS NOT DISTINCT FROM, and which compares two NULLs as being equal.
So you may refactor your query to this:
SELECT t1.nation, t1.state, t1.region, t2.population
FROM Table1 t1
INNER JOIN Table2 t2
ON t2.nation <=> t1.nation AND
t2.state <=> t1.state AND
t2.region <=> t1.region;
