2009-08-28 7 views
76

Je continue à obtenir l'erreur MySQL # 1054, lorsque vous essayez d'effectuer cette requête de mise à jour:colonne inconnue dans l'erreur « Liste des champs » sur Mise à jour MySQL requête

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH 
SET MASTER_USER_PROFILE.fellow=`y` 
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID 
AND TRAN_USER_BRANCH.BRANCH_ID = 17 

Il est probablement une erreur de syntaxe, mais je l'ai essayé d'utiliser une jointure interne au lieu et d'autres changements, mais je continue à recevoir le même message:

Unknown column 'y' in 'field list' 

Répondre

109

Essayez d'utiliser différentes citations pour « y » comme le caractère de citation d'identifiant est le backtick (« ` »). Sinon, MySQL "pense" que vous pointez sur une colonne nommée "y".

Voir aussi MySQL 5 Documentation

+0

Cela m'aide merci. –

15

Vous pouvez vérifier votre choix de citations (utilisez des guillemets simples/double pour les valeurs, les chaînes, etc. et des backticks pour column-names).

Puisque vous ne souhaitez que mettre à jour la table master_user_profile je recommande une requête imbriquée:

UPDATE 
    master_user_profile 
SET 
    master_user_profile.fellow = 'y' 
WHERE 
    master_user_profile.user_id IN (
     SELECT tran_user_branch.user_id 
     FROM tran_user_branch WHERE tran_user_branch.branch_id = 17); 
+0

Merci pour la suggestion, cela semble être une méthode plus élégante. –

33

Enfermez une chaîne à transmettre au serveur MySQL à l'intérieur des guillemets simples; .: par exemple

$name = "my name" 
$query = " INSERT INTO mytable VALUES (1 , '$name') " 

Notez que bien que la requête est enfermée entre guillemets, vous devez joindre une chaîne entre guillemets simples.

+0

Merci. J'essayais de comprendre pourquoi ma requête en PHP ne fonctionnait pas, tout ce que j'avais à faire était d'ajouter les guillemets simples. – RiCHiE

+1

Je sais que c'est un ancien article, mais seriez-vous en mesure de répondre à la question pourquoi vous devez mettre des citations? – RiCHiE

+0

@RiCHiE il est généralement plus sûr lors de l'utilisation de chaînes. Aussi, il me semble plus logique de mettre une chaîne entre guillemets. Lorsque vous utilisez des fonctions comme SHA1, par exemple, vous mettez des guillemets dans le contenu comme 'SHA1 ('$ var')' – George

2

Dans mon cas, cela était dû à un espace de fin invisible à la fin du nom de la colonne. Vérifiez simplement si vous utilisez vraiment "y" ou "y" à la place.

0

Une requête comme thi également provoquer l'erreur

select table1.id from table2 

Lorsque le tableau est spécifié dans la colonne sélectionnez et non inclus dans la clause.

0

Lorsque je travaillais sur une application .Net avec le code EF, j'ai reçu ce message d'erreur lorsque j'essayais d'appliquer ma migration avec une instruction Sql("UPDATE tableName SET columnName = value");.

Il s'avère que j'ai mal orthographié le columnName.

Questions connexes