我对 MySQL 感到困惑。我正在查询一个主键字段名为index
.
SELECT * FROM content WHERE index = 7
很简单吧?我不断收到语法错误index = 7
,错误号 1064 左右(无法粘贴错误,因为它在 iPhone 模拟器上)。
该字段index
包含一个 7。它是PRIMARY_KEY
, 和 类型int(6)
数据库可以很好地查询其他字段等。
在查询此字段之前,是否需要确保设置到位?
非常感激。
我对 MySQL 感到困惑。我正在查询一个主键字段名为index
.
SELECT * FROM content WHERE index = 7
很简单吧?我不断收到语法错误index = 7
,错误号 1064 左右(无法粘贴错误,因为它在 iPhone 模拟器上)。
该字段index
包含一个 7。它是PRIMARY_KEY
, 和 类型int(6)
数据库可以很好地查询其他字段等。
在查询此字段之前,是否需要确保设置到位?
非常感激。
SELECT * FROM content WHERE `index` = 7
index
是 MySQL 中的保留字。你必须用反引号来逃避它。看这里
另一种合适的解决方法(对于作为保留字的列标识符)是使用表名或表别名来限定列。我的偏好是始终使用表别名。在这个例子中,我们给表content
一个别名c
,然后我们可以在查询中引用它:
SELECT c.* FROM content c WHERE c.index = 7
在这个例子中,列名周围不需要反引号,因为当它用表别名限定时,MySQL 将其视为标识符;保留字不能用表名限定。
使用表别名是我们在更复杂的语句中使用的一种模式,它引用多个表和/或多次引用同一个表。没有什么能阻止我们对简单的语句使用相同的模式。
并且始终允许标识符周围的反引号,即使它们是必需的:
SELECT `c`.* FROM `content` `c` WHERE `c`.`index` = 7
索引是保留字,使用
Select * from content
where `index` = 7