sql >> Database >  >> RDS >> Mysql

Waarom mislukt de query niet met een niet-bestaande kolom in de subquery?

Deze vraag:

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

Wordt geïnterpreteerd als:

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

omdat bbb.id bestaat niet. Bij het schrijven van SQL raad ik u aan altijd tabelaliassen te gebruiken. De vraag die je dacht te schrijven:

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

de fout zou genereren die u verwacht.



  1. Oracle verwijderquery duurt te lang

  2. mySql kopieert rijen naar dezelfde tabel met gewijzigde sleutelwaarde (bestaande niet overschrijven)

  3. BITAND() Functie in Oracle

  4. postgresql:gegevenstype voor md5-berichtoverzicht?