15

、、のbank3 つの列を持つテーブルがあります。uidnickbalance

ニックネームに基づいて残高を返すクエリを作成しようとしていますが、Unknown column 'Alex' in 'where clause'このクエリを使用するとエラーが発生します。

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

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

4

4 に答える 4

36

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

あなたがしたい:

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

あいまいになる可能性がなく、テーブル/列名に特殊文字やスペースが含まれていない場合は、` をオフのままにしておくことができます。

以下は、無味乾燥で読みにくいドキュメントです: 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・その他お役立ち情報引用

于 2012-04-13T14:22:27.727 に答える
6

間違った「`」を使用しています

代わりに ' を使用

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
于 2012-04-13T14:22:15.170 に答える
5

'フィールドの値には目盛りではなく、一重引用符 ( ) を使用する必要があります

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

目盛りは、フィールド名を示すために使用されます。

于 2012-04-13T14:22:09.197 に答える