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

9voto

M Khalid Junaid Points 21850

Votre définition alias ne sont pas bien accueillis par les WHERE vous devez utiliser la clause HAVING pour cette

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

OU vous pouvez utiliser directement le nom original de la colonne avec l'option WHERE

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

De la même manière que vous avez le résultat dans un alias défini par l'utilisateur comme résultat d'une sous-requête ou d'un calcul, il sera accessible par la méthode de l'alias. HAVING pas par la clause WHERE

SELECT u_name AS user_name ,
(SELECT last_name FROM users2 WHERE id=users.id) as user_last_name
FROM users  WHERE u_name = "john" HAVING user_last_name ='smith'

7voto

David Aldridge Points 27624

Soit :

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

ou :

SELECT user_name
from
(
SELECT u_name AS user_name
FROM   users
)
WHERE  u_name = "john";

Cette dernière devrait être la même que la première si le SGBDR supporte la poussée des prédicats dans la vue en ligne.

6voto

Steven A. Lowe Points 40596

Corrigée :

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

5voto

Non, vous devez le sélectionner avec le nom correct. Si vous avez donné un alias à la table que vous sélectionnez, vous pouvez l'utiliser.

2voto

Jarrett Meyer Points 11147

Non, vous ne pouvez pas. Le nom d'utilisateur n'existe pas jusqu'au moment du retour.

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