Mysql 检查是否缺少行时,应使用';为空';或';=空';

Mysql 检查是否缺少行时,应使用';为空';或';=空';,mysql,null,left-join,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,但查询失败了。

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

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
的结果为空)。所以我用
测试,其中t2.id=NULL
,它可以工作

有趣的是,如果我没记错的话,
WHERE t2.id=NULL
在我以前的机器上运行时(我不能再在它上进行测试),会产生相反的效果(即使
t2.id
为NULL,也会返回所有行)

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


编辑:了解同一查询现在如何按预期工作。其中t2.id=NULLid不返回任何内容。我可能把先前的
结果(其中t2.id=NULL
误认为是“正在工作”

而您正在第二台机器上使用某种数据库复制?只是想知道数据库是否相同。而且,@AlexStybaev它是复制的。顺便说一句,我有代码要处理并插入require行,它依赖于这个查询来正常工作