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
Libérer: 2025-01-20 02:09:09
original
563 Les gens l'ont consulté

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 :

SELECT *, AVG(rev_rating) AS avg_rating
FROM reviews
GROUP BY rev_id
HAVING avg_rating > 5;
Copier après la connexion

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 :

SELECT *
FROM reviews
WHERE (SUM(reviews.rev_rating) / COUNT(reviews.rev_id)) > 5;
Copier après la connexion

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 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