15

我有一个名为bank三列的表:uid, nick, balance.

我正在尝试创建一个查询,该查询将根据尼克返回余额,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 -其他有用的信息-quot

于 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 回答
-4

这种错误的另一个原因是,给定表中没有这样的列。检查拼写、字母大小写、印刷错误以及表定义中给定字段的实际存在。

于 2017-10-26T10:47:53.410 回答