代码之家  ›  专栏  ›  技术社区  ›  Alex

MySQL未查询主键

  •  0
  • Alex  · 技术社区  · 14 年前

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

    SELECT * FROM content WHERE index = 7

    很简单吧?不过,我一直遇到语法错误 index = 7 ,错误编号1064(无法粘贴错误,因为它在iPhone模拟器上)。

    现场 指数 包含一个7。它是 PRIMARY_KEY ,类型为 int(6)

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

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

    非常感谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   juergen d    14 年前
    SELECT * FROM content WHERE `index` = 7
    

    index 是MySQL中的保留字。你必须用背信弃义来逃避它。看见 here

        2
  •  2
  •   spencer7593    14 年前

    另一个合适的解决方法(对于作为保留字的列标识符)是用表名或表别名限定列。我倾向于始终使用表别名。在这个例子中,我们给出了 content 的别名 c ,然后我们可以在查询中引用:

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

    在本例中,列名周围不需要回溯标记,因为当使用表别名限定列名时,MySQL将其视为标识符;保留字不能用表名限定。

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

    并且始终允许对标识符进行回溯,即使它们是必需的:

    SELECT `c`.* FROM `content` `c` WHERE `c`.`index` = 7
    
        3
  •  1
  •   stb    14 年前

    索引是一个保留字,使用

    Select * from content 
    where `index` = 7