我有一个查询以我不会期望的方式行事。当请求不在空集的项目时返回空集
我有两个表,stagin_users
和users
。在这两个表中,我有一个名为name
的列。在users
表中,name
的EVERY值是NULL
。在staging_users
我有13行没有NULL值。我试图运行一个查询,在那里我得到了暂存表中名称不在users
表中的所有用户。
我的书面查询:
SELECT name FROM staging_users WHERE name NOT IN (SELECT name FROM users);
由于编写查询,我没有得到任何结果回来。这种行为的原因是什么?
由于users
表只具有NULL值,我知道我可以说WHERE name IS NOT NULL
,我会得到相同的结果,但我想这个查询针对表中的值,而这一切正好是NULL
工作。
可能重复的[MySQL的选择x从WHERE NOT IN(SELECT X选自B) - 意外的结果](http://stackoverflow.com/questions/1001144/mysql-select-x-from -a-where-in-select-x-from-b-unexpected-result) – 2014-08-28 16:57:26
NULL被看作是'unknown',这使得查询排序无效。 – RST 2014-08-28 17:18:46