sql >> Database >  >> RDS >> Mysql

MySQL NOT IN query werkt niet

Zijn er NULL's in taxon_name_element.parent_id ?

De vraag...

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

...is gelijk aan...

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

...waar parent_id_X zijn werkelijke waarden die zich momenteel in de parent_id . bevinden kolom. Als zelfs één van hen NULL is, is de corresponderende taxon_id <> parent_id_X expressies "samenvouwen" in NULL, waarbij de hele WHERE-expressie mee wordt gesleept.

Filter NULL's uit om te krijgen wat je wilt:

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
)


  1. PHP &MySQL Categorieën weergeven van subcategorieën uit de database

  2. Resultaten van een opgeslagen procedure invoegen in een tijdelijke tabel

  3. Alle velden selecteren behalve één veld in mysql

  4. Vereist MySQL InnoDB altijd een index voor elke externe sleutelbeperking?