加入NULL值

时间:2014-09-11 18:44:10

标签: mysql join null

如何处理MySQL JOIN处理NULL值。由于大多数地址没有第二行地址,因此address2有许多NULL值。当我运行查询以匹配基于address1,address2和zip的地址时,只有address1和zip匹配时,查询才会返回正匹配。我确保两个表的地址都为NULL,当它们为NULL时。所以基本上运行查询我运行两个查询。

UPDATE target t
JOIN pl2.site2 s ON t.address1=s.address1 AND t.zip5=s.zip5 
SET t.idsite=s.idsite
WHERE t.address2 IS NULL AND s.address2 IS NULL;

UPDATE target t
JOIN pl2.site2 s ON t.address1=s.address1  AND t.address2=s.address2 AND t.zip5=s.zip5 
SET t.idsite=s.idsite;

并非真正的努力工作。只是想进一步深入了解SQL的工作原理。也许有另一个解决方案,我不想设置列=''(空白),它们也是NULL。

1 个答案:

答案 0 :(得分:0)

您有几个选项可以加入空字段。一种是使用COALESCE将空值转换为空白以进行比较:

UPDATE target t
JOIN pl2.site2 s ON 
    t.address1=s.address1 AND 
    COALESCE(t.address2,'')=COALESCE(s.address2,'') AND 
    t.zip5=s.zip5 
SET t.idsite=s.idsite;

另一种选择是在OR中使用JOIN

UPDATE target t
JOIN pl2.site2 s ON 
    t.address1=s.address1 AND 
    t.zip5=s.zip5 AND
    ((t.address2=s.address2) OR (t.address2 IS NULL AND s.addresss2 IS NULL))
SET t.idsite=s.idsite;