sql >> Databasteknik >  >> RDS >> Mysql

MySQL NOT IN-frågan fungerar inte

Finns det några NULLs i taxon_name_element.parent_id ?

Frågan...

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

...är likvärdig med...

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

...där parent_id_X är faktiska värden som för närvarande finns i parent_id kolumn. Om ens en av dem är NULL, motsvarande taxon_id <> parent_id_X uttryck kommer att "kollaps" till NULL och drar hela WHERE-uttrycket med sig.

Filtrera bort NULLs för att få det du vill ha:

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. Fördelar och nackdelar med att använda lagrade procedurer

  2. INSERT INTO ... SELECT utan att specificera alla kolumner

  3. mysql - flytta rader från en tabell till en annan

  4. MySQL kartesisk produkt mellan två SELECT-satser