2009-08-28 16 views
76

Ich erhalte MySQL-Fehler # 1054, wenn diese Update-Abfrage auszuführen versuchen:Unbekannte Spalte in ‚Feldliste‘ Fehler auf MySQL-Update Abfrage

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 

Es ist wahrscheinlich einige Syntaxfehler, aber ich habe versucht mit eine innere Verknüpfung statt und andere Veränderungen, aber ich halte die gleiche Nachricht erhalten:

Unknown column 'y' in 'field list' 

Antwort

109

verschiedene Angebote für „y“ als Kennung Anführungszeichen wird die Graviszeichen Versuchen Sie es mit („`“). Ansonsten "denkt" MySQL, dass Sie auf eine Spalte mit dem Namen "y" zeigen.

Siehe auch MySQL 5 Documentation

+0

Es hilft mir danke. –

15

Sie können Ihre Auswahl von Zitaten überprüfen (verwenden Doppel-/Einzel Anführungszeichen für Werte, Strings, etc. und Backticks für Spaltennamen).

Da Sie nur die Tabelle master_user_profile aktualisieren möchten würde ich eine verschachtelte Abfrage empfehlen:

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

Danke für den Vorschlag, das scheint eine elegantere Methode. –

33

beliebige Zeichenfolge beilegen zu dem MySQL-Server in einfachen Anführungszeichen übergeben werden; z.B .:

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

Beachten Sie, dass, obwohl die Abfrage zwischen doppelten Anführungszeichen eingeschlossen ist, können Sie in einfachen Anführungszeichen beliebige Zeichenfolge einschließen müssen.

+0

Danke. Ich versuchte herauszufinden, warum meine Abfrage in PHP nicht funktionierte, ich musste nur die einfachen Anführungszeichen hinzufügen. – RiCHiE

+1

Ich weiß, das ist ein alter Beitrag, aber könnten Sie antworten, warum Sie Zitate einfügen müssen? – RiCHiE

+0

@RiCHiE es ist normalerweise sicherer, wenn Saiten benutzt werden. Außerdem macht es mehr Sinn für mich, eine Zeichenfolge zwischen Anführungszeichen zu setzen. Wenn Sie zum Beispiel Funktionen wie SHA1 benutzen, schreiben Sie Zitate in den Inhalt hinein wie 'SHA1 ('$ var')' – George

2

In meinem Fall wurde es durch ein unsichtbares Leerzeichen am Ende des Spaltennamens verursacht. Überprüfe einfach, ob du wirklich "y" oder "y" benutzt hast.

0

Eine Abfrage wie thi wird auch den Fehler verursacht

select table1.id from table2 

Wo die Tabelle angegeben in Spalte wählen und nicht in dem FROM-Klausel enthalten.

0

Beim Arbeiten an einer .Net-Anwendung, die zuerst mit dem EF-Code erstellt wurde, habe ich diese Fehlermeldung erhalten, als ich versuchte, meine Migration dort anzuwenden, wo ich eine Sql("UPDATE tableName SET columnName = value");-Anweisung hatte.

Es stellt sich heraus, dass ich den columnName falsch geschrieben habe.

Verwandte Themen