检查缺失的行时,应使用'IS NULL'或'= NULL'

时间:2012-04-03 14:21:11

标签: mysql null left-join

我需要使用以下查询来检查非链接的行

SELECT * FROM t1 
LEFT JOIN tlink ON tlink.name = 'the_link' AND tlink.ref_id = t1.id
LEFT JOIN t2 ON t2.id = tlink.ref2_id
WHERE t2.id IS NULL

id是所有3个表的主键列。此查询适用于本地计算机和我的主机。我正在运行MySQL5.1.53。今天,我开始在另一台机器上编码,我只是设置了相同版本的MySQL,但查询失败了。即使t2没有引用(t2.id从结果中为NULL),它也会返回所有行。所以我用WHERE t2.id = NULL进行了测试,但它确实有效。

有趣的是,如果我没记错的话,WHERE t2.id = NULL从我以前的机器运行时会产生相反的效果(即使t2.id为NULL也会返回所有行)(我不能这样做)再试一次。)

那么哪种方式更合适呢?严格模式对此有影响吗?

编辑:某些查询现在如何按预期工作。并且WHERE t2.id = NULL没有返回任何内容。我可能误以为WHERE t2.id = NULL的早期结果为' working'

0 个答案:

没有答案