【问题标题】:where clause in mysql for update query gives syntax error for varchar primary key [duplicate]mysql中用于更新查询的where子句为varchar主键提供语法错误[重复]
【发布时间】:2014-03-03 03:47:33
【问题描述】:

我有一个表“PREFERENCES”,其中包含用户 ID(整数)、键(varchar(255))和值(长文本)列。列 (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。

【问题讨论】:

  • KEYMySQL reserved keyword. 您必须用反引号将其引用以将其用作列或表标识符。
  • 但您的确切错误消息表明userid 存在问题。确保它前面也有正确的空格并且是unquoted
  • 你过去的错误信息是否正确'userid=12 AND key ='abc'' at line 1
  • REFERENCES 是保留字,但这不会影响您的查询。您的错误消息表明 PREFERENCES 是问题所在,这很奇怪。对列名和表名使用反引号。

标签: mysql sql sql-update where-clause


【解决方案1】:
key 

是保留关键字。用反引号括起来

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

【讨论】:

  • @Taj 。 . .如果这回答了您的问题,您应该接受答案。
猜你喜欢
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 2021-10-18
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2011-10-20
相关资源
最近更新 更多