Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionner la colonne par alias dans MySQL

Réponse courte :

  1. références aux alias dans la liste SELECT ou
  2. Expressions aliasées

La seule documentation que j'ai trouvée à ce sujet jusqu'à présent est :https://bugs .mysql.com/bug.php?id=79549

Dans ce lien, il y a ce qui suit :

[9 décembre 2015 15:35] Roy Lyseng...Voici un contexte plus long pour la décision initiale :

Contrairement aux références aux alias dans les sous-requêtes de la clause WHERE (et dans GROUP BY, d'ailleurs), il n'y a aucune raison (sauf la conformité standard) de ne pas autoriser les références aux alias dans la liste SELECT , car ils doivent être disponibles dans la même phase d'exécution de la requête. Mais le support en 5.6 était assez arbitraire :

Étant donné ceci :créer la table t1(a int, b int),

L'alias dans la liste SELECT n'est pas valide :

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

Mais dans une sous-requête, la référence à c est valide :

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

Et la sous-requête doit être après la définition de l'alias :

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

Il est donc facile de dire que la prise en charge des références aux alias dans la liste SELECT était plutôt ad-hoc. Néanmoins, nous essaierons de réimplémenter l'ancienne solution, mais sans essayer de nettoyer les trous évidents dans le support de cette fonctionnalité. Mais le référencement des alias dans les sous-requêtes de la clause WHERE ne sera pas réimplémenté.

Je recherche encore de la documentation au-delà du rapport de bogue décrivant cette fonctionnalité dans les documents standard ; mais jusqu'ici pas de chance.