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

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

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 02:09:09562parcourir

Can I Use Aliases in MySQL's WHERE Clause?

Clause MySQL WHERE : limitations des alias

MySQL permet d'aliaser les colonnes pour une meilleure lisibilité et de créer de nouvelles expressions dans les requêtes. Cependant, l'utilisation directe d'alias dans la clause WHERE entraîne souvent une erreur de « colonne inconnue ». En effet, la clause WHERE filtre les lignes avant que les alias ne soient attribués.

Solutions de contournement :

Une solution consiste à utiliser la clause HAVING. Contrairement à WHERE, HAVING opère après le regroupement et l'agrégation, permettant la référence aux alias créés dans la requête :

<code class="language-sql">SELECT *, AVG(rev_rating) AS avg_rating
FROM reviews
GROUP BY rev_id
HAVING avg_rating > 5;</code>

Ici, avg_rating est correctement référencé dans HAVING.

Pour réaliser un filtrage similaire dans la clause WHERE, vous devez remplacer l'alias par son expression complète :

<code class="language-sql">SELECT *
FROM reviews
WHERE (SUM(reviews.rev_rating) / COUNT(reviews.rev_id)) > 5;</code>

Considérations importantes :

La clause WHERE ne prend pas en charge toutes les expressions, en particulier les fonctions d'agrégation comme SUM() ou AVG() utilisées dans les alias. Dans de tels cas, HAVING est indispensable.

Comme l'explique la documentation MySQL, le référencement des alias de colonnes dans WHERE est interdit car leurs valeurs peuvent ne pas être calculées au moment 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