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

Mar*_*kum 11 mysql sql select

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

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

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*bot 30

反引号(`)用于标识符,如表名,列名等.单引号(')用于字符串文字.

你想做:

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
Run Code Online (Sandbox Code Playgroud)

或者,更明确一点:

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1
Run Code Online (Sandbox Code Playgroud)

当没有歧义的可能性,并且当表/列名称没有特殊字符或空格时,您可以离开`.

以下是一些干燥且难以阅读的文档: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


fan*_*nts 6

你用错了"`"

用'代替

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
Run Code Online (Sandbox Code Playgroud)


mel*_*okb 5

您需要使用单引号('),而不是字段值的刻度标记

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
Run Code Online (Sandbox Code Playgroud)

刻度标记用于表示字段名称.