Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser d'agrégats avec alias dans la clause HAVING de SQL ?
Pourquoi les agrégats avec alias sont interdits dans les clauses HAVING
En SQL, les utilisateurs rencontrent souvent une erreur lorsqu'ils tentent d'utiliser un alias pour un agrégat dans une clause HAVING. Cela découle de l'ordre spécifique dans lequel SQL traite les requêtes.
La clause HAVING, qui filtre les résultats d'une opération GROUP BY, est évaluée avant la clause SELECT. Par conséquent, les alias définis dans la clause SELECT ne sont pas encore disponibles lors de l'évaluation de la clause HAVING.
Pour mieux comprendre cela, considérons la séquence logique suivante d'exécution de requête :
Depuis la clause HAVING est évalué avant la clause SELECT, il ne peut pas faire référence aux alias définis ultérieurement dans la requête. Cette restriction explique pourquoi l'utilisation d'un alias dans une clause HAVING, comme le montre l'exemple, entraîne une erreur "Nom de colonne invalide".
En revanche, les alias fonctionnent dans la clause ORDER BY car la clause ORDER BY est évalué après la clause SELECT. Par conséquent, les alias définis dans la clause SELECT peuvent être utilisés dans la clause ORDER BY.
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!