如何使用可为空的列连接 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