我有一张三列表:taxon_id
,scientific_name_element_id
和parent_id
。我想找到那些是孩子而不是父母的元素,所以它是结构的终点。MySQL“NOT IN”查询不起作用
我发现一些消息来源说建议我用
select taxon_id
from taxon_name_element
where taxon_id not in
(select parent_id from taxon_name_element)
但是,这并不工作,我得到一个空集的时候其实我可以浏览条目,看看有,例如,一个taxon_id=1
,和NO parent_id=1
相反,当我看到taxon_id的是PARENT_ID的,我得到一个非空的结果集
我在做什么错?我怎样才能解决这个问题?
可能重复[SQL NOT IN的约束和NULL值(http://stackoverflow.com/questions/129077/sql-not-in -constraint-and-null-values) – ruakh 2012-02-18 18:20:19
感谢ruakh,我添加了一个不是null的要求,它的工作。我的理解是否正确?:如果taxon_id与NULL比较,它会返回未知和未知添加到任何数字将产生未知,因此结果是没有行?感谢linkk – SimaPro 2012-02-18 18:50:22
是的,确切地说。像'3 <> NULL'是不确定的,因为'NULL'可能是一个三;所以也是'3 NOT IN(1,2,NULL)'。 MySQL将只返回已知*的行以满足WHERE条款。 – ruakh 2012-02-18 18:53:07