我需要使用以下查询来检查非链接的行
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'