Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL NOT IN-Abfrage funktioniert nicht

Gibt es NULLen in taxon_name_element.parent_id ?

Die Abfrage...

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

...entspricht...

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

...wobei parent_id_X sind tatsächliche Werte, die sich derzeit in der parent_id befinden Säule. Wenn auch nur einer von ihnen NULL ist, die entsprechende taxon_id <> parent_id_X Ausdrücke werden zu NULL "kollabieren" und den gesamten WHERE-Ausdruck mitziehen.

Filtern Sie NULL-Werte heraus, um das zu bekommen, was Sie wollen:

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
)