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) 

上面的查询在 附近给了我一个正确的语法错误a (a.id,我可能做错了什么?

有任何想法吗?

4

2 回答 2

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 小提琴演示

我认为您也不能为此使用表别名,但我可能弄错了。

顺便说一句 - 我使用 cond 作为条件字段只是为了使它更容易 - 替换为您的字段名称(您可能需要带有条件的反引号,因为我相信它是一个保留字)。

于 2013-03-02T23:53:51.497 回答
1

你得到一个语法错误,因为 Mysql 的INSERT语句不允许你给插入的表起别名:你必须说INSERT INTO products (id, ...).

于 2013-03-02T23:53:10.977 回答