sql >> Database teknologi >  >> RDS >> Mysql

Vælg kolonne efter alias i MySQL

Kort svar:

  1. referencer til aliaser i SELECT-listen eller
  2. Aliaserede udtryk

Den eneste dokumentation, jeg har fundet om dette indtil videre, har været:https://bugs .mysql.com/bug.php?id=79549

I det link er der følgende:

[9. dec 2015 15:35] Roy Lyseng...Her er en længere baggrund for den oprindelige beslutning:

I modsætning til referencer til aliaser i underforespørgsler i WHERE-sætningen (og i GROUP BY, for den sags skyld), er der ingen grund (undtagen standardoverholdelse), til at vi ikke skal tillade referencer til aliaser i SELECT-listen , da de burde være tilgængelige i samme fase af forespørgselsudførelsen. Men understøttelsen i 5.6 var ret vilkårlig:

Givet dette:opret tabel t1(a int, b int),

Alias ​​i SELECT-listen er ikke gyldigt:

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

Men i en underforespørgsel er reference til c gyldig:

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

Og underforespørgsel skal være efter definition af alias:

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

Så det er nemt at sige, at understøttelse af referencer til aliaser i SELECT-listen var ret ad hoc. Ikke desto mindre vil vi forsøge at genimplementere den gamle løsning, men uden forsøg på at rydde op i de åbenlyse huller i understøttelsen af ​​denne funktion. Men henvisning til aliaser i underforespørgsler i WHERE-sætningen vil ikke blive genimplementeret.

Jeg leder endnu efter dokumentation ud over fejlrapporten, der beskriver denne funktionalitet i standarddokumenterne; men indtil videre uden held.



  1. Sådan fungerer SQLite Upper()

  2. MySQL dual master

  3. Formater mysql-forespørgselsresultatet til det ønskede format

  4. Kan en MySQL-udløser simulere en CHECK-begrænsning?