sql >> Databasteknik >  >> RDS >> Mysql

Välj kolumn efter alias i MySQL

Kort svar:

  1. referenser till alias i SELECT-listan eller
  2. Aliaserade uttryck

Den enda dokumentation jag har hittat om detta hittills har varit:https://bugs .mysql.com/bug.php?id=79549

I den länken finns följande:

[9 dec 2015 15:35] Roy Lyseng...Här är en längre bakgrund för det ursprungliga beslutet:

I motsats till referenser till alias i underfrågor i WHERE-satsen (och i GROUP BY, för den delen), finns det ingen anledning (förutom standardefterlevnad) att vi inte ska tillåta referenser till alias i SELECT-listan , eftersom de borde vara tillgängliga i samma fas av exekveringen av frågan. Men stödet i 5.6 var ganska godtyckligt:

Med tanke på detta:skapa tabell t1(a int, b int),

Alias ​​i SELECT-listan är inte giltigt:

  select a+b as c,c+1 from t1;

Men inom en underfråga är referensen till c giltig:

  select a+b as c,(select c+1) from t1;

Och underfrågan måste vara efter definitionen av alias:

  select (select c+1),a+b as c from t1;

Så det är lätt att säga att stöd för referenser till alias i SELECT-listan var ganska ad-hoc. Ändå kommer vi att försöka implementera den gamla lösningen igen, men utan några försök att rensa upp de uppenbara hålen i stödet för denna funktion. Men hänvisningar till alias i underfrågor i WHERE-satsen kommer inte att implementeras på nytt.

Jag letar fortfarande efter dokumentation utöver felrapporten som beskriver denna funktionalitet i standarddokumenten; men hittills ingen tur.



  1. Aloha editor:Infogar bilder/bilder

  2. Hur tar man bort nya radtecken från datarader i mysql?

  3. CodeIgniter/PHP/MySQL:Hämtar data med JOIN

  4. Konvertera BibTex-fil till databasposter med Python