sql >> Databasteknik >  >> RDS >> Mysql

MySQL Duplicate kolumnfel endast när frågan lindades som underfråga

Anledningen till att du fick felet är på grund av aliaset AS X . Men problemet är egentligen att du använde * , istället för att lista de fält du vill ha.

I den första frågan, SELECT * producerar faktiskt fält som:

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

Detta fungerar bra, såvida du inte försöker referera till ett fält med dess namn direkt och inte använder dess alias. Hur som helst kommer din SQL-motor inte att ha några problem med det här, vad du än gör med resultatuppsättningen kan dock fortfarande ha ett problem.

Men när du flyttar din fråga till en underfråga och alias resultaten AS X , då får du:

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

Nu kan du se varför det klagar. Du kan se varför det också är dåligt att använda* , eftersom den här kombinationen kan fungera under en viss tidsperiod, och sedan lägger du till ett nytt fält i en befintlig tabell, det vill säga samma som en annan tabell, och pang, varje fråga du har skrivit med båda dessa tabeller, måste nu vara omskriven.



  1. Använda pseudokolumner med en länkad server

  2. Använda fönsterfunktioner i en uppdateringssats

  3. Knee-Jerk Wait Statistik :PAGELATCH

  4. PDOStatement::execute():SQLSTATE[HY093]:Ogiltigt parameternummer:antalet bundna variabler matchar inte antalet tokens