3 つのカラムを持つ bank
というテーブルがあります。uid,
nick,
balanceの 3 つのカラムを持つ
bank` というテーブルがあります。
ニックネームに基づいて残高を返すクエリを作成しようとしていますが、このクエリを使用すると、Unknown column 'Alex' in 'where clause'
というエラーが表示されます。
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
あるいは、もっとはっきり言うと
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-Other-Useful-Information-quot