2012-04-13 18 views
11

uidnickbalanceという3つの列を持つbankというテーブルがあります。MySQLエラー: 'where句'の不明な列

私はニックに基づいてバランスを返しますクエリを作成しようとしている、と私は、このクエリを使用する場合、私はエラーUnknown column 'Alex' in 'where clause'を取得しています:

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

誰も私が間違ってここにやっているかを見ることができます?

+0

「アレックス」周辺のバッククックを使用しましたか、それらのシングルクォートですか? – gmalette

答えて

26

バッククォート(`)などの単一引用符は、テーブル名、列名、同様に、識別子に使用されている(')です文字列リテラルに使用されます。

あなたがやりたい:

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

あるいは、より明確にするために:

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

曖昧さのないチャンスがないときに、テーブル/カラム名に特殊文字を持っていない場合、またはスペースを置くと、 `off 'のままにすることができます。ここで

は読み乾燥しにくいですいくつかのドキュメントです:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

しかし、ここでは読みやすいdba.stackoverflowに関連する質問です:https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

そして、ここでは非常に良いページがということです私は誰もが読むことをお勧めします:http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

5

あなたは、単一引用符(')を使用する必要があり、

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

目盛りは、フィールド名を示すために使用されている、あなたのフィールドの値のための目盛りではありません。あなたは間違っている "`"

使用を使用している

6

'の代わり

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

このようなエラーのもう一つの理由は、まあ、この列には、この表のはありません。表の定義で、スペル、大文字、表記ミス、および指定されたフィールドの実際の存在を確認します。

関連する問題