如何使用可为空的列连接 MySQL 表?

Posted

技术标签:

【中文标题】如何使用可为空的列连接 MySQL 表?【英文标题】:How to join MySQL tables using a nullable column? 【发布时间】:2013-08-08 01:07:00 【问题描述】:

我对 mysql 有点不熟悉,所以我希望我能在这里找到一些针对我的问题的建议。

基本上我有两张桌子,为了方便起见,称它们为 A 和 B。两个表都有一个类型为varchar 的可空列C。当我使用 C 连接 A 和 B 时,我丢失了任一表中 C 为 NULL 的所有行。我知道这在 MySQL 中是正常的,但我想得到的是一个包含两个表中 C 为 NULL 的行组合的连接。 我发现下面的查询似乎运行良好。

SELECT *
FROM A JOIN B
ON (A.C IS NULL AND B.C IS NULL) OR (A.C IS NOT NULL AND B.C IS NOT NULL AND A.C = B.C)

所以我的问题是,这个查询是我能得到的最好的,还是有办法让这个连接更好?谢谢!

【问题讨论】:

【参考方案1】:

使用NULL-safe equal operator:

SELECT * FROM A JOIN B ON A.C <=> B.C

【讨论】:

非常有用。非常感谢。

以上是关于如何使用可为空的列连接 MySQL 表?的主要内容,如果未能解决你的问题,请参考以下文章

在 clickhouse 中,使用强制转换函数时如何为可为空的列返回 null

如何将 CheckBox 绑定到可为空的布尔类型 DbColumn?

在 PSQL 中为可为空的列添加唯一约束

将可为空的列作为参数传递给 Spark SQL UDF

代码首先为必填字段生成可为空的列

在 PySpark 数据框中添加可为空的列