140 votes

Colonne inconnue dans la clause Where

J'ai une question simple :

SELECT u_name AS user_name FROM users WHERE user_name = "john";

Je reçois Unknown Column 'user_name' in where clause . Je ne peux pas faire référence à 'user_name' dans d'autres parties de la déclaration, même après select 'u_name as user_name' ?

1voto

SELECT user_name
FROM
(
SELECT name AS user_name
FROM   users
) AS test
WHERE  user_name = "john"

1voto

oliyide Points 31

Colonne inconnue dans WHERE causée par les lignes 1 et 2 et résolue par la ligne 3 :

  1. $sql = "SELECT * FROM users WHERE username =".$userName;
  2. $sql = "SELECT * FROM users WHERE username =".$userName."";
  3. $sql = "SELECT * FROM users WHERE username ='".$userName."'";

1voto

F_S Points 26

Peut-être que ça aide.

Vous pouvez

SET @somevar := '';
SELECT @somevar AS user_name FROM users WHERE (@somevar := `u_name`) = "john";

Ça marche.

MAIS ASSUREZ-VOUS DE CE QUE VOUS FAITES !

  • Les index ne sont PAS UTILISÉS ici
  • Il y aura un scannage de FULL TABLE - vous n'avez pas spécifié la partie LIMIT 1
  • Donc, - CETTE RECHERCHE SERA LENTE sur les grandes tables.

Mais, peut-être que ça aide dans certains cas

0voto

Blumer Points 3380

Bien que vous puissiez aliaser vos tables dans votre requête (par exemple, "SELECT u.username FROM users u ;"), vous devez utiliser les noms réels des colonnes auxquelles vous faites référence. AS n'a d'incidence que sur la façon dont les champs sont renvoyés.

0voto

Rob McInnes Points 340

Pas à ma connaissance dans MS-SQL 2000/5. J'ai déjà été victime de cette erreur dans le passé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X