mysql for update query中的where子句为varchar主键提供了语法错误

时间:2014-03-02 19:40:44

标签: mysql sql sql-update where-clause

我有一个表'PREFERENCES',其列有userid(整数),key(varchar(255))和value(longtext)。列(userid,key)是主键。我已经在表格中有一些数据。
例如:

userid | key | value
12     | abc | testvalue12abc
12     | pqr | testvalue12pqr
13     | abc | testvalue13abc
14     | abc | testvalue14abc
14     | pqr | testvalue14pqr
14     | xyz | testvalue14xyz

当我运行更新查询时,

UPDATE PREFERENCES 
  SET value='somethingElse' 
WHERE userid=12 AND key='abc';

我收到语法错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'userid = 12 AND key ='abc''附近使用正确的语法。

我在where子句中尝试了不同的组合;当where子句中没有varchar列时,它工作正常。但是当在where子句中使用varchar列时,它会因语法错误而失败。

我正在使用mysql,服务器5.1.49。

1 个答案:

答案 0 :(得分:2)

key 

是保留关键字。

将其括在反引号中
UPDATE PREFERENCES SET value='somethingElse' WHERE userid=12 AND `key`='abc'