37

我对 MySQL 有点不习惯,所以我希望我能在这里找到一些关于我的问题的建议。

基本上我有两张桌子,为了方便起见,称它们为 A 和 B。两个表都有一个类型为 C 的可空列varchar。当我使用 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)

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

4

1 回答 1

97

使用NULL 安全的相等运算符

SELECT * FROM A JOIN B ON A.C <=> B.C
于 2013-08-06T20:45:18.107 回答