sql >> Database >  >> RDS >> Mysql

MySQL Dubbele kolomfout alleen wanneer query ingepakt als subquery

De reden dat je de fout hebt gekregen is vanwege de aliasing AS X . Maar het probleem is eigenlijk dat je * . hebt gebruikt , in plaats van de gewenste velden op te sommen.

In de eerste zoekopdracht, de SELECT * produceert feitelijk velden zoals:

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Dit werkt prima, tenzij u rechtstreeks naar een veld probeert te verwijzen met zijn naam en zijn alias niet gebruikt. Hoe dan ook, je SQL-engine zal hier geen probleem mee hebben, wat je ook doet met de resultatenset, er kan nog steeds een probleem zijn.

Wanneer u uw zoekopdracht echter naar een subquery verplaatst en de resultaten AS X als alias gebruikt, , dan krijg je:

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Nu kun je zien waarom het klaagt. Je kunt zien waarom het ook slecht is om* . te gebruiken , omdat deze combinatie enige tijd kan werken, en dan voeg je een nieuw veld toe aan een bestaande tabel, dat is hetzelfde als een andere tabel, en bang, elke query die je met beide tabellen hebt geschreven, moet nu worden herschreven.



  1. Hoe te bepalen of het getal float of integer is

  2. SELECT-query in WHERE-component van UPDATE-query

  3. SQL-UPDATE voor beginners

  4. Gemeenschappelijke gebruiker met SYSBACKUP-privilege