Maison >base de données >tutoriel mysql >Puis-je utiliser des alias de colonne dans la clause WHERE de MySQL ?

Puis-je utiliser des alias de colonne dans la clause WHERE de MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-20 01:52:08483parcourir

Can I Use Column Aliases in MySQL's WHERE Clause?

Utiliser des alias dans la clause MySQL WHERE

Dans MySQL, les alias sont souvent utilisés pour donner des noms temporaires aux colonnes dérivées. Bien que pratiques pour référence, leur utilisation dans une clause WHERE peut provoquer des erreurs.

MySQL restreint le référencement des alias de colonnes dans la clause WHERE. En effet, la valeur de la colonne n'est peut-être pas encore déterminée lorsque la clause WHERE est exécutée. Par conséquent, spécifier un alias dans la clause WHERE déclenchera une erreur « colonne inconnue ».

Solution

Pour surmonter cette limitation, il existe plusieurs solutions de contournement :

  • Clause HAVING : La clause HAVING peut accéder à l'alias après la clause WHERE, lorsque la valeur de la colonne est connue. Par exemple, pour sélectionner des enregistrements avec une note moyenne supérieure à 5 (calculée comme sum(reviews.rev_rating)/count(reviews.rev_id) comme avg_rating), vous utiliserez la clause HAVING suivante :
<code class="language-sql">HAVING avg_rating > 5</code>
  • Répéter une expression : Alternativement, vous pouvez répéter l'expression d'alias directement dans la clause WHERE. Cependant, cette méthode ne fonctionne qu’avec des fonctions non agrégées. Par exemple, pour sélectionner des enregistrements avec une note moyenne supérieure à 5 :
<code class="language-sql">WHERE (sum(reviews.rev_rating)/count(reviews.rev_id)) > 5</code>

Restrictions

Veuillez noter que toutes les expressions ne sont pas autorisées dans la clause WHERE. Les fonctions d'agrégation comme SUM nécessitent la clause HAVING.

Comme indiqué dans le manuel MySQL :

"Les références aux alias de colonne dans une clause WHERE ne sont pas autorisées car la valeur de la colonne peut ne pas avoir été déterminée lors de l'exécution de la clause WHERE."

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