我有一个名为bank
的表格,其中有三列:uid
,nick
,balance
。
我正在尝试创建一个基于切口返回余额的查询,当我使用此查询时收到错误Unknown column 'Alex' in 'where clause'
:
SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1
谁能看到我在这里做错了什么?
答案 0 :(得分:28)
反引号(`)用于标识符,如表名,列名等。单引号(')用于字符串文字。
你想这样做:
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
答案 1 :(得分:6)
你使用了错误的“`”
使用'而不是
SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
答案 2 :(得分:5)
您需要使用单引号('
),而不是字段值的刻度标记
SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
刻度线标记用于表示字段名称。
答案 3 :(得分:0)
这个主题对我有很大帮助。 SQL
导致错误,因为变量不是这样的:select * from accounts where name='$variable'
在哪里。但只有当我在WHERE
中添加多个条件时才会发生这种情况。
答案 4 :(得分:-3)
出现这种错误的另一个原因是,在给定的表中没有这样的列。检查拼写,字母大小写,印刷错误以及表定义中给定字段的实际存在。