我有一个带有两列主键(key1,key2)的表。

这是我的查询

INSERT INTO mytable (key1, key2, val1, val2)
VALUES (:k1, :k2, :v1, :v2)
ON DUPLICATE KEY UPDATE val1 = val1 + :v1, val2 = val2 + :v2

现在,当我插入具有重复键的行时,出现以下错误消息:



为什么不更新现有的(157,433)行?

最佳答案

您不能在查询中多次引用同一个占位符。 MySQL有一个内置的解决方案-如果您在VALUES(colname)子句中使用ON DUPLICATE KEY,则它是指如果不是重复项则应存储在列中的值。因此使用:

INSERT INTO mytable (key1, key2, val1, val2)
VALUES (:k1, :k2, :v1, :v2)
ON DUPLICATE KEY UPDATE val1 = val1 + VALUES(val1), val2 = val2 + VALUES(val2)

我不确定为什么会导致创建重复条目时出错。

关于mysql - On Duplicate Key Update不会更新,但会为重复项引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24476121/

10-10 21:36
查看更多