sql >> Base de Datos >  >> RDS >> Oracle

La consulta con una subselección rota debería generar un error pero devuelve filas

El motivo es que cuando una columna sin alias no existe en la subconsulta pero sí en la consulta externa, Oracle asume que se está refiriendo a la columna de la consulta externa.

Con los alias, la consulta que le confunde se vería así:

select *
from   test_values tv
where  tv.tst_id in (select tv.tst_id2
                     from   test_lookup tl
                     where  tl.tst_value = 'findMe');

Con suerte, ¿eso aclara las cosas?

El problema que está viendo es un muy buen ejemplo de por qué siempre debe etiquetar sus columnas con la tabla de la que provienen:¡hace que sea mucho más fácil mantener la consulta para empezar!