MySQL没有查询主键

时间:2012-08-09 11:05:51

标签: mysql primary-key

我对MySQL感到困惑。我正在查询一个名为index的主键字段的表。

SELECT * FROM content WHERE index = 7

非常简单吧?我不断收到语法错误,大约index = 7,错误号码1064(无法粘贴错误,因为它在iPhone模拟器上)。

字段index包含7.它是PRIMARY_KEY,类型为int(6)

数据库可以很好地查询其他字段等等。

在查询此字段之前,是否需要确保设置到位?

非常感谢。

3 个答案:

答案 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