2010-11-19 83 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'