Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum schlägt die Abfrage nicht mit einer nicht vorhandenen Spalte in der Unterabfrage fehl?

Diese Abfrage:

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

Wird interpretiert als:

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

weil bbb.id ist nicht vorhanden. Beim Schreiben von SQL schlage ich vor, dass Sie immer Tabellenaliase verwenden. Die Abfrage, von der Sie dachten, dass Sie sie schreiben:

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

würde den erwarteten Fehler erzeugen.