Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

oracle ignora erro de identificador inválido na subconsulta


Você não qualificou seus nomes de coluna. Então, você acha que está executando:
SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT f.airc_manufact FROM flight f);

Se f.airc_manufact não existe, as regras de escopo dizem para procurar na consulta externa. Então, o que você está realmente executando é:
SELECT a.*
FROM aircraft a
WHERE a.airc_manufact IN (SELECT a.airc_manufact FROM flight f);

Isso é bastante inútil como uma cláusula de filtragem.

Moral:Sempre qualificar nomes de coluna em uma consulta, principalmente se a consulta se referir a mais de uma tabela.