"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ne puis-je pas utiliser des alias de colonne dans MySQL où les clauses?

Pourquoi ne puis-je pas utiliser des alias de colonne dans MySQL où les clauses?

Publié le 2025-03-24
Parcourir:137

Why Can't I Use Column Aliases in MySQL WHERE Clauses?

MySQL est les limitations de la clause et de la colonne

Utilisation d'alias de colonnes dans la clause MySQL conduit souvent à l'erreur "# 1054 - colonne inconnue dans 'in / all / any subquery'". Cet article explique pourquoi et propose des approches alternatives.

mysql nécessite des noms de colonne dans où les clauses sont soit directement à partir de la structure du tableau, soit dérivées via la notation de points. Les alias de colonne, les noms temporaires attribués pendant le traitement de la requête, ne sont pas reconnus.

La documentation MySQL interdit explicitement cela. La raison est l'ordre d'exécution de la requête: la clause WHERE est évaluée avant les alias sont attribués. Par conséquent, l'utilisation d'un alias dans la clause Where entraîne un comportement non défini.

pour surmonter cela, utilisez la clause ayant. Cette clause est conçue pour filtrer les lignes après le regroupement et l'agrégation, ce qui le rend approprié lors du filtrage sur des colonnes calculées (comme celles créées avec des alias). Dans les situations où un alias est nécessaire pour le filtrage, en utilisant l'alias dans la clause ayant une solution de contournement viable.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3