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