ON DUPLICATE多次更新

时间:2013-03-02 23:47:37

标签: mysql sql duplicates

我正在尝试创建一个同时添加/更新多行的查询,我正在尝试通过更新除私钥之外的所有值来确保它正确处理重复密钥,在我的情况下将是{{1 }}

a.id

上面的查询在INSERT INTO products a (a.id, a.price, a.condition, a.link, a.price_updated) VALUES ('t1', 11, 'used', 'adasd', 100), ('t2', 11, 'used', 'adasd', 100) ON DUPLICATE KEY UPDATE VALUES (a.price, a.condition, a.link, a.price_updated) 附近给出了正确的语法错误,我可能做错了什么?

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西:

INSERT INTO products (id, price, cond, link, price_updated) 
VALUES ('t1', 11, 'used', 'adasd', 100), 
   ('t1', 11, 'used', 'adasd', 2100) 
ON DUPLICATE KEY UPDATE 
   price = VALUES(price), 
   cond = VALUES(cond), 
   link = VALUES(link), 
   price_updated = VALUES(price_updated)

SQL Fiddle Demo

我认为你也不能使用表别名,但我可能会弄错。

顺便说一句 - 我在条件字段中使用了cond只是为了让它更容易 - 用你的字段名称替换(你可能需要用条件返回刻度,因为我认为它是一个保留字)。

答案 1 :(得分:1)

您收到语法错误,因为Mysql的INSERT语句不允许您对插入的表进行别名:您必须说INSERT INTO products (id, ...)