sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué la consulta no falla con una columna inexistente en la subconsulta?

Esta consulta:

select sum(amount)
from aaa
where id not in (select id from bbb);

Se interpreta como:

select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);

porque bbb.id no existe. Al escribir SQL, sugiero que siempre use alias de tabla. La consulta que pensabas que estabas escribiendo:

select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);

generaría el error que esperas.