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
Libérer: 2025-01-20 01:52:08
original
535 Les gens l'ont consulté

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>
Copier après la connexion
  • 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal