【发布时间】: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。
【问题讨论】:
-
KEY是 MySQL reserved keyword. 您必须用反引号将其引用以将其用作列或表标识符。 -
但您的确切错误消息表明
userid存在问题。确保它前面也有正确的空格并且是unquoted。 -
你过去的错误信息是否正确
'userid=12 AND key ='abc'' at line 1 -
REFERENCES 是保留字,但这不会影响您的查询。您的错误消息表明 PREFERENCES 是问题所在,这很奇怪。对列名和表名使用反引号。
标签: mysql sql sql-update where-clause