两个表都包含NULL时如何JOIN ON

Sam*_*erg 4 mysql sql null join

我正在2列上进行2个表的外连接.如果table1.column1 = table2.column1和table1.column2 = table2.column2,则应该进行连接.由于允许column2包含null,因此只要值为null,连接就会失败,因为null不等于null(只有计算机科学家才会喜欢).

我想出的解决方法是:

select table1.column1,table1.colunn1,table2.column1,table2.column2 from 
table1 
left join table2 
       on table1.column1=table2.column1 
       and if(table1.column2 is null,table2.column2 is null, table1.column2=table2.column2)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但必须有更好的方法吗?

Zan*_*ien 9

您可以使用MySQL 空安全比较运算符 <=>:

SELECT    t1.column1, t1.column2, t2.column1, t2.column2 
FROM      table1 t1
LEFT JOIN table2 t2 
       ON t1.column1 = t2.column1 AND t1.column2 <=> t2.column2
Run Code Online (Sandbox Code Playgroud)