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
. Puis-je ne pas me référer à 'user_name'
d'autres parties de la déclaration même après select 'u_name as user_name'
?
mysql
sql
mysql-error-1054
Btuman
la source
la source
Qu'en est-il de:
la source
HAVING
place deWHERE
dans ce cas?Consultez la page de manuel MySQL suivante: http://dev.mysql.com/doc/refman/5.0/en/select.html
(...)
la source
Pensez-y comme ceci, votre clause where est évaluée en premier, pour déterminer quelles lignes (ou lignes jointes) doivent être renvoyées. Une fois la clause where exécutée, la clause select s'exécute pour elle.
Pour mieux dire, imaginez ceci:
Vous ne pouvez pas faire référence à la première moitié sans la seconde. Où est toujours évalué en premier, puis la clause select.
la source
Si vous essayez d'effectuer une requête comme celle-ci (recherchez tous les nœuds avec au moins une pièce jointe) où vous avez utilisé une instruction SELECT pour créer un nouveau champ qui n'existe pas réellement dans la base de données, et essayez d'utiliser l'alias pour ce résultat, vous rencontrerez le même problème:
Vous obtiendrez une erreur "Colonne inconnue 'attachmentcount' dans la clause WHERE".
La solution est en fait assez simple - remplacez simplement l'alias par l'instruction qui produit l'alias, par exemple:
Vous obtiendrez toujours l'alias renvoyé, mais maintenant SQL ne devrait pas s'embarrasser de l'alias inconnu.
la source
(
dans votre requête avant le(COUNT(*)
qui n'est fermé nulle part.Votre définition
alias
n'est pas accueillie par laWHERE
clause que vous devez utiliser laHAVING
clause pour celaOU vous pouvez utiliser directement le nom de la colonne d'origine avec le
WHERE
Comme vous avez le résultat dans un alias défini par l'utilisateur à la suite d'une sous-requête ou de tout calcul, il sera accessible par la
HAVING
clause et non par leWHERE
la source
Soit:
ou:
Ce dernier devrait être le même que le premier si le SGBDR prend en charge la poussée de prédicat dans la vue en ligne.
la source
corrigée:
la source
Non, vous devez le sélectionner avec le nom correct. Si vous avez donné la table que vous sélectionnez à partir d'un alias, vous pouvez l'utiliser.
la source
Non tu ne peux pas. nom_utilisateur n'existe pas avant l'heure de retour.
la source
Colonne inconnue dans la
WHERE
clause causée par les lignes 1 et 2 et résolue par la ligne 3:$sql = "SELECT * FROM users WHERE username =".$userName;
$sql = "SELECT * FROM users WHERE username =".$userName."";
$sql = "SELECT * FROM users WHERE username ='".$userName."'";
la source
Peut-être que cela aide.
Vous pouvez
Ça marche.
MAIS ASSUREZ-VOUS DE CE QUE VOUS FAITES!
Mais, peut-être que cela aide dans certains cas
la source
Alors que vous pouvez alias vos tables dans votre requête (par exemple, "SELECT u.username FROM users u;"), vous devez utiliser les noms réels des colonnes que vous référencez. AS affecte uniquement la manière dont les champs sont renvoyés.
la source
la source
J'ai juste eu ce problème.
Assurez-vous qu'il n'y a pas d'espace dans le nom de l'entité dans la base de données.
par exemple 'nom_utilisateur' au lieu de 'nom_utilisateur'
la source
essayez votre tâche en utilisant la condition IN ou la condition OR et cette requête fonctionne également sur spark-1.6.x
ou
la source
Pour moi, la racine du problème était un nombre que j'ai copié pour l'utiliser dans une clause WHERE. Le numéro avait un symbole «invisible», du moins pour MySQL Workbench. J'ai placé le numéro dans la console Chrome, il était clairement visible.
la source
J'ai eu le même problème, j'ai trouvé cela utile.
n'oubliez pas de mettre $ user entre '' guillemets simples.
la source