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
)