Maison > base de données > tutoriel mysql > Pourquoi MySQL génère-t-il une erreur « #1054 - Colonne inconnue » lors de l'utilisation d'alias de colonne dans les clauses WHERE ?

Pourquoi MySQL génère-t-il une erreur « #1054 - Colonne inconnue » lors de l'utilisation d'alias de colonne dans les clauses WHERE ?

Susan Sarandon
Libérer: 2025-01-22 08:27:09
original
340 Les gens l'ont consulté

Why Does MySQL Throw a

Alias ​​de clause WHERE et de colonne MySQL : dépannage de l'erreur « #1054 - Colonne inconnue »

Les requêtes MySQL produisent parfois l'erreur "#1054 - Colonne inconnue 'guaranteed_postcode' dans la sous-requête 'IN/ALL/ANY'" lors de l'utilisation d'alias de colonne dans la clause WHERE. En effet, le SQL standard empêche l'utilisation d'alias dans la clause WHERE en raison d'incohérences potentielles dans la détermination de la valeur de colonne lors de l'exécution. La base de données n'a pas encore attribué de valeurs à l'alias lorsque la clause WHERE est traitée.

Le manuel MySQL indique clairement que les alias ne sont valides que dans les clauses GROUP BY, ORDER BY ou HAVING. Ces clauses fonctionnent après la récupération des données, garantissant la disponibilité des alias.

Votre requête utilise probablement SUBSTRING(locations.raw,-6,4) alias guaranteed_postcode dans la clause WHERE. Étant donné que MySQL rencontre l'alias avant que la valeur de la colonne ne soit calculée, il génère l'erreur.

Pour corriger cela, utilisez la clause HAVING (pour les fonctions d'agrégation ou les calculs) ou une sous-requête dans la clause WHERE. La sous-requête évite d'utiliser l'alias directement dans la clause WHERE de la requête principale, fournissant ainsi le filtrage nécessaire sans violer les règles de MySQL.

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