Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie die Spalte nach Alias ​​in MySQL aus

Kurze Antwort:

  1. Verweise auf Aliase in der SELECT-Liste oder
  2. Alias-Ausdrücke

Die einzige Dokumentation, die ich bisher dazu gefunden habe, war:https://bugs .mysql.com/bug.php?id=79549

In diesem Link steht Folgendes:

[9. Dezember 2015 15:35] Roy Lyseng...Hier ist ein längerer Hintergrund für die ursprüngliche Entscheidung:

Im Gegensatz zu Verweisen auf Aliase in Unterabfragen in der WHERE-Klausel (und übrigens in GROUP BY) gibt es keinen Grund (außer der Einhaltung von Standards), warum wir Verweise auf Aliase in der SELECT-Liste nicht zulassen sollten , da sie in derselben Phase der Abfrageausführung verfügbar sein sollten. Aber die Unterstützung in 5.6 war ziemlich willkürlich:

In Anbetracht dessen:erstelle Tabelle t1(a int, b int),

Alias ​​in der SELECT-Liste ist ungültig:

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

Aber innerhalb einer Unterabfrage ist der Verweis auf c gültig:

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

Und die Unterabfrage muss nach der Definition des Alias ​​sein:

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

Es ist also leicht zu sagen, dass Unterstützung für Verweise auf Aliase in der SELECT-Liste war eher ad hoc. Trotzdem werden wir versuchen, die alte Lösung neu zu implementieren, aber ohne den Versuch, die offensichtlichen Lücken in der Unterstützung für dieses Feature zu beseitigen. Verweisende Aliase in Unterabfragen in der WHERE-Klausel werden jedoch nicht neu implementiert.

Ich suche noch nach Dokumentation über den Fehlerbericht hinaus, der diese Funktionalität in den Standarddokumenten beschreibt; aber bisher kein Glück.