Mysql
 sql >> Database >  >> RDS >> Mysql

Perché la query non ha esito negativo con una colonna inesistente nella sottoquery?

Questa domanda:

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

Viene interpretato come:

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

perché bbb.id non esiste. Quando si scrive SQL, suggerisco di utilizzare sempre gli alias di tabella. La query che pensavi di scrivere:

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

genererebbe l'errore che ti aspetti.