Mysql
 sql >> Database >  >> RDS >> Mysql

La query MySQL NOT IN non funziona

Ci sono NULL in taxon_name_element.parent_id ?

La domanda...

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

...equivale 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

...dove parent_id_X sono valori effettivi che sono attualmente nel parent_id colonna. Se anche solo uno di essi è NULL, il corrispondente taxon_id <> parent_id_X le espressioni "collassano" in NULL, trascinando con sé l'intera espressione WHERE.

Filtra i NULL per ottenere ciò che desideri:

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
)