Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A consulta MySQL NOT IN não está funcionando


Existem NULLs em taxon_name_element.parent_id ?

A pergunta...
select taxon_id 
from taxon_name_element
where taxon_id not in (
    select parent_id
    from taxon_name_element
)

...é equivalente a...
select taxon_id 
from taxon_name_element
where
    taxon_id <> parent_id_1
    AND taxon_id <> parent_id_2
    ...
    AND taxon_id <> parent_id_N

...onde parent_id_X são valores reais que estão atualmente no parent_id coluna. Se mesmo um deles for NULL, o taxon_id <> parent_id_X correspondente expressões irão "recolher" em NULL, arrastando toda a expressão WHERE com ela.

Filtre NULLs para obter o que deseja:
select taxon_id 
from taxon_name_element
where taxon_id not in (
    select parent_id
    from taxon_name_element
    where parent_id is not null
)