【问题标题】:Joining with NULL values使用 NULL 值连接
【发布时间】:2014-09-11 18:44:09
【问题描述】:

如何处理 MySQL JOIN 处理 NULL 值。由于大多数地址没有第二行地址,因此 address2 有许多 NULL 值。当我运行查询以根据 address1、address2 和 zip 匹配地址时,当只有 address1 和 zip 匹配时,查询不会返回正匹配。我确保两个表在地址 2 为 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 的工作原理。也许还有另一种解决方案,我也不想将 columns=''(blank) 设置为 NULL 。

【问题讨论】:

    标签: mysql join null


    【解决方案1】:

    您有几个选项可以加入空字段。一种是使用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;
    

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

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 2022-01-19
      • 2022-01-01
      • 2018-02-20
      • 2012-01-04
      • 2020-10-14
      • 2011-03-18
      • 2014-08-29
      相关资源
      最近更新 更多