Maison >base de données >tutoriel mysql >Pourquoi ma requête SQL renvoie-t-elle « Colonne inconnue dans la clause Where » ?
Comprendre l'erreur SQL « Colonne inconnue dans la clause Where »
L'erreur redoutée « Colonne inconnue dans la clause Where » résulte de l'ordre d'exécution spécifique dans les instructions SQL. SQL traite les requêtes de droite à gauche, ce qui signifie que la clause WHERE
est évaluée avant la clause SELECT
.
Illustrons avec un exemple :
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
Ici, la clause WHERE
tente de filtrer en utilisant user_name
. Cependant, l'alias user_name
n'est défini que dans la clause SELECT
. Étant donné que la clause WHERE
est traitée en premier, elle n'a pas encore rencontré cet alias, ce qui entraîne l'erreur « colonne inconnue ».
Solutions :
Il existe deux manières simples de résoudre ce problème :
Utilisez le nom de colonne d'origine dans la clause WHERE
: C'est la solution la plus simple et la plus efficace. Faites référence à la colonne par son nom réel, et non par son alias :
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
Placez la colonne alias entre parenthèses : Cette approche force la base de données à résoudre l'alias avant d'évaluer la clause WHERE
. Bien que fonctionnel, il est généralement moins efficace que d'utiliser le nom de colonne d'origine :
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
En comprenant l'ordre d'évaluation de SQL et en utilisant l'une ou l'autre de ces solutions, vous pouvez résoudre efficacement l'erreur « Colonne inconnue dans 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!