我有一張三列表: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