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

Consulta com sub-seleção quebrada deve resultar em erro, mas retorna linhas


A razão é porque quando uma coluna sem alias não existe na subconsulta, mas existe na consulta externa, o Oracle assume que você está se referindo à coluna da consulta externa.

Com aliases, a consulta com a qual você está confuso seria:
select *
from   test_values tv
where  tv.tst_id in (select tv.tst_id2
                     from   test_lookup tl
                     where  tl.tst_value = 'findMe');

Espero que isso torne as coisas mais claras?

O problema que você está vendo é um exemplo muito bom de por que você deve sempre rotular suas colunas com a tabela de onde elas vieram - torna muito mais fácil manter a consulta para começar!