MySQL错误:'where子句'中的未知列

时间:2012-04-13 14:20:22

标签: mysql sql select

我有一个名为bank的表格,其中有三列:uidnickbalance

我正在尝试创建一个基于切口返回余额的查询,当我使用此查询时收到错误Unknown column 'Alex' in 'where clause'

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

谁能看到我在这里做错了什么?

5 个答案:

答案 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)

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