2012-04-13 17 views
11

Ich habe eine Tabelle mit der Bezeichnung bank mit drei Spalten: uid, nick, balance.MySQL-Fehler: Unbekannte Spalte in 'Where-Klausel'

Ich versuche, eine Abfrage zu erstellen, die das Gleichgewicht auf dem nick Basis zurückkehren, und ich bin immer einen Fehler Unknown column 'Alex' in 'where clause', wenn ich diese Abfrage verwenden:

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1 

Kann jemand sehen, was ich hier falsch mache ?

+0

Haben Sie Backticks in der Nähe von "Alex" benutzt oder sind das die einzelnen Quotes? – gmalette

Antwort

26

Backticks (`) sind für Bezeichner wie Tabellennamen, Spaltennamen verwendet, usw. Einfache Anführungszeichen (') sind Wird für String-Literale verwendet.

Sie tun möchten:

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

Oder werden deutlicher:

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1 

Wenn es keine Möglichkeit der Mehrdeutigkeit, und wenn Tabelle/Spaltennamen haben keine Sonderzeichen oder Räume, dann können Sie die "Off" verlassen.

Hier einige Dokumentation zu lesen, trocken und hart ist: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Aber hier ist eine weitere Frage auf dba.stackoverflow, die leichter zu lesen ist: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

Und hier ist eine sehr gute Seite, ich empfehle jedem lesen: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

5

Sie müssen einzelne Anführungszeichen (') verwenden, nicht für Markierungen für Werte Ihrer Felder

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

Tick Marken verwendet werden Feldnamen zu bezeichnen.

6

Sie verwenden den falschen "`"

Use 'statt

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 
-3

ein weiterer Grund für einen solchen Fehler ist, na ja, gibt es keine solche Spalte in der gegebenen Tabelle. Überprüfen Sie Rechtschreibung, Groß-/Kleinschreibung, typografische Fehler und die tatsächliche Anwesenheit des angegebenen Feldes in der Tabellendefinition.