mysql - 当两个表都包含 NULL 时如何加入

标签 mysql sql join null

我正在对 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)

这工作正常,但一定有更好的方法吗?

最佳答案

您可以使用 MySQL null-safe comparison operator <=> :

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

关于mysql - 当两个表都包含 NULL 时如何加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566409/

相关文章:

mysql - 优化多级 MySQL 子查询(folksonomy 和分类法)

join - HIVE-桶联接的用例是什么

mysql用户登录

php - 如何显示表中的所有记录?

sql - "plan should not reference subplan' s变量“错误

php - 如何在 Laravel Eloquent ORM 中选择以数字开头的单词?

Python peewee 连接多个表

php - MYSQL 5.5.32 查询未在 PHP 中的远程数据库上运行

php - SQL插入后获取最后一个ID

php - 人气算法