2012-08-09 104 views
0

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

SELECT * FROM content WHERE index = 7

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

领域index包含7这是PRIMARY_KEY和类型int(6)

的数据库工作正常查询其他领域等。

在查询此字段之前,我需要确保是否存在需要设置的设置?

非常感谢。

+0

最有可能是因为'index'读为关键字! – mithilatw 2012-08-09 11:07:06

回答

3
SELECT * FROM content WHERE `index` = 7 

index是MySQL中的保留字。你必须用反引号来逃避它。见here

+0

我想我只是有一个“阿哈的时刻”。谢谢 – Alex 2012-08-09 11:10:40

1

指数是一个保留字,用

Select * from content 
where `index` = 7 
1

另一种合适的解决方法(为一个柱标识符是一个保留字)是表名或表别名来限定柱。我的首选是始终使用表别名。在这个例子中,我们给表contentc一个别名,然后我们可以在查询中引用:

SELECT c.* FROM content c WHERE c.index = 7 

在这个例子中,反引号不需要绕柱的名字,因为当它是合格的有表别名,MySQL认为它是一个标识符;保留字不能用表名限定。

使用表别名是我们在更复杂的语句中使用的模式,它引用多个表和/或多次引用同一个表。没有什么能阻止我们用简单的语句来使用相同的模式。

和周围标识符反引号总是被允许的,即使需要他们:

SELECT `c`.* FROM `content` `c` WHERE `c`.`index` = 7