Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que a consulta não falha com coluna inexistente na subconsulta?


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

É interpretado como:
select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);

porque bbb.id não existe. Ao escrever SQL, sugiro que você sempre use aliases de tabela. A consulta que você pensou que estava escrevendo:
select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);

geraria o erro esperado.