Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用空值联接_Mysql_Join_Null - Fatal编程技术网

Mysql 使用空值联接

Mysql 使用空值联接,mysql,join,null,Mysql,Join,Null,如何处理MySQLJOIN如何处理NULL值。由于大多数地址没有第二行地址,address2有许多空值。当我运行基于address1、address2和zip匹配地址的查询时,当只有address1和zip匹配时,查询不会返回正匹配的。我已经确保两个表的address2的值都是NULL时的NULL。因此,基本上要运行查询,我运行两个查询 UPDATE target t JOIN pl2.site2 s ON t.address1=s.address1 AND t.zip5=s.zip5 SET

如何处理MySQL
JOIN
如何处理
NULL
值。由于大多数地址没有第二行地址,address2有许多空值。当我运行基于address1、address2和zip匹配地址的查询时,当只有address1和zip匹配时,查询不会返回正匹配的。我已经确保两个表的address2的值都是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的工作原理。也许还有另一种解决方案,我不想将列设置为空

有两个选项可以连接空字段。一种是使用
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;
另一个选项是在
连接中使用

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;