Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser d'alias dans la clause HAVING en SQL ?

Pourquoi ne puis-je pas utiliser d'alias dans la clause HAVING en SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 15:23:11769parcourir

Why Can't I Use Aliases in the HAVING Clause in SQL?

Incapacité d'utilisation d'un alias dans la clause Have : raisons logiques

En SQL, un alias fournit une référence alternative à une colonne ou une table à améliorer lisibilité. Cependant, l'utilisation d'un alias dans la clause HAVING, comme indiqué dans l'exemple de code, entraîne une erreur « Nom de colonne non valide ». Cela se produit car l'ordre d'évaluation des opérations SQL exige que la clause HAVING soit traitée avant l'attribution de l'alias.

Le flux d'exécution en SQL est le suivant :

  1. Sélection de table : Les entités mentionnées dans la clause FROM sont combinées.
  2. Filtrage des lignes : Les lignes ne correspondent pas les conditions de la clause WHERE sont supprimées.
  3. Regroupement : les données sont divisées en groupes en fonction de la clause GROUP BY.
  4. Évaluation de groupe : clause HAVING vérifie les groupes pour des critères spécifiques.
  5. Sélection de colonnes : les données à publier sont sélectionnées selon le SELECT
  6. Distinction : les lignes en double sont éliminées si elles sont spécifiées dans SELECT.
  7. Tri : les résultats sont organisés comme défini dans la clause ORDER BY.

Dans le scénario donné, l'alias "col7" est attribué dans la clause SELECT. Cependant, au moment où la clause HAVING est évaluée, l'attribution d'alias n'a pas encore eu lieu. Ainsi, la référence à "col7" devient invalide, entraînant l'erreur.

Cette explication précise que l'utilisation des alias dans la clause HAVING est restreinte en raison de la séquence de calculs SQL et souligne que la clause ORDER BY peut utiliser alias car il est traité après l'attribution de l'alias.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn