一个简单的SQL查询不起作用,我无法弄清楚什么是错的

时间:2011-12-13 20:32:47

标签: mysql

我是MySQL新手,尝试根据用户名和行索引更新表行,但它不起作用。告诉我'INDEX = 54'附近有错误。

INDEX是自动递增主索引列的名称。

UPDATE `TABLENAME`
   SET NAME = 'NAME', DESCRIPTION = 'DESC'
 WHERE USER = 'name' AND INDEX = 54

实际上,甚至:

SELECT * FROM `tablename` WHERE INDEX=30

不起作用;它说:

  

“#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行'INDEX = 30 LIMIT 0,30'附近使用正确的语法”

我在这里缺少一些基本的东西。

4 个答案:

答案 0 :(得分:4)

INDEXMySQL reserved keyword.如果您将其用作列名,请将其括在反引号中:

UPDATE `TABLENAME`
   SET NAME = 'NAME', DESCRIPTION = 'DESC'
 WHERE USER = 'name' AND `INDEX` = 54

答案 1 :(得分:3)

尝试引用INDEX,就像引用TABLENAME

一样
`INDEX`

它可能会将其解释为关键字。此外,您忘记提供确切的错误消息。

答案 2 :(得分:1)

INDEX是一个保留字。您可能需要将其放在后引号中:

UPDATE `TABLENAME`
   SET NAME = 'NAME', DESCRIPTION = 'DESC'
 WHERE USER = 'name' AND `INDEX` = 54

然后你需要担心是否应该使用大写或小写或一些混合大小写拼写。

答案 3 :(得分:1)

INDEX是一个保留字。用反引号逃脱它。

UPDATE `TABLENAME` 
    SET NAME = 'NAME', 
        DESCRIPTION = 'DESC' 
    WHERE USER = 'name' 
        AND `INDEX` = 54