Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête MySQL NOT IN ne fonctionne pas

Y a-t-il des valeurs NULL dans taxon_name_element.parent_id ?

La requête...

select taxon_id 
from taxon_name_element
where taxon_id not in (
    select parent_id
    from taxon_name_element
)

...est équivalent à...

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

...où parent_id_X sont des valeurs réelles qui sont actuellement dans le parent_id colonne. Si même l'un d'entre eux est NULL, le taxon_id <> parent_id_X correspondant les expressions "s'effondreront" en NULL, en faisant glisser toute l'expression WHERE avec elle.

Filtrez les valeurs NULL pour obtenir ce que vous voulez :

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
)