2010-11-19 85 views
1

的空间我有如下表如何指定列名(在where子句中),其中有在MySQL

ID First Name Last Name 
1 Ruby   Rails 
2 Loop   Western 

列有他们的空间,所以当我编写一个查询类似

$sql = "SELECT * FROM Persons where [Last Name] = 'Western' ";

它引发错误

Error, could not list tables MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Last Name] = 'Western'' at line 1

我如何得到这个工作?

回答

4

如果这是有效的,你将不得不使用反引号:

`Last Name` 

,但如果你问我,不这样做。它正在乞求寻找某处的麻烦。只需使用下划线或驼峰:LastName

+0

这确实假定OP对模式有任何控制,但是......都一致。 +1 – 2010-11-19 17:01:47

+0

这也适用于MS Access! – knocte 2014-02-24 21:02:54

3

你周围使用列名反单引号:

SELECT * FROM Persons WHERE `Last Name` = 'Western' 

请注意,这不是标准的SQL;微软公司的名称中也没有使用方括号。 SQL标准使用用双引号括起来的'分隔标识符':

SELECT * FROM Persons WHERE "Last Name" = 'Western'