sql >> Database >  >> RDS >> Mysql

Selecteer kolom op alias in MySQL

Kort antwoord:

  1. verwijzingen naar aliassen in de SELECT-lijst of
  2. Gealiaste uitdrukkingen

De enige documentatie die ik hierover tot nu toe heb gevonden is:https://bugs .mysql.com/bug.php?id=79549

In die link staat het volgende:

[9 Dec 2015 15:35] Roy Lyseng...Hier is een langere achtergrond voor de oorspronkelijke beslissing:

In tegenstelling tot verwijzingen naar aliassen in subquery's in de WHERE-clausule (en in GROUP BY, wat dat betreft), is er geen reden (behalve standaardcompliance) dat we geen verwijzingen naar aliassen in de SELECT-lijst zouden moeten toestaan , omdat ze beschikbaar moeten zijn in dezelfde fase van de uitvoering van de query. Maar de ondersteuning in 5.6 was nogal willekeurig:

Gegeven dit:maak tabel t1(a int, b int),

Alias ​​in SELECT-lijst is niet geldig:

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

Maar binnen een subquery is de verwijzing naar c geldig:

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

En subquery moet na definitie van alias zijn:

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

Het is dus gemakkelijk te zeggen dat ondersteuning voor verwijzingen naar aliassen in de SELECT-lijst was nogal ad hoc. Desalniettemin zullen we proberen de oude oplossing opnieuw te implementeren, maar zonder enige poging om de voor de hand liggende gaten in de ondersteuning voor deze functie op te ruimen. Maar het verwijzen naar aliassen in subquery's in de WHERE-clausule wordt niet opnieuw geïmplementeerd.

Ik ben nog op zoek naar documentatie die verder gaat dan het bugrapport waarin deze functionaliteit wordt beschreven in de standaarddocumenten; maar tot nu toe geen geluk.



  1. Invoegen in een MySQL-tabel of bijwerken indien aanwezig

  2. Hoe gegevens tussen twee databases in PostgreSQL te vergelijken?

  3. Als u het MS Access-team een ​​vraag zou kunnen stellen, wat zou dat dan zijn?

  4. SQLAlchemy via Paramiko SSH