Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle ignora l'errore di identificatore non valido nella sottoquery

Non hai qualificato i nomi delle colonne. Quindi, pensi di correre:

SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT f.airc_manufact FROM flight f);

Se f.airc_manufact non esiste, quindi le regole di ambito dicono di guardare nella query esterna. Quindi, quello che stai veramente correndo è:

SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT a.airc_manufact FROM flight f);

È abbastanza inutile come clausola di filtro.

Morale:Sempre qualificare i nomi delle colonne in una query, in particolare se la query fa riferimento a più di una tabella.