MySQL:批量插入新记录或增加现有记录

时间:2013-05-02 18:05:42

标签: mysql increment insert-update

我需要做这样的事情:

INSERT `stats` (`id`,`clicks`) VALUES 
(1, clicks+7),
(2, clicks+3),
....
ON DUPLICATE KEY UPDATE `clicks`=VALUES(clicks)

换句话说,当表没有pk id的记录时 - 它插入并且clicks得到7(或3)。当存在具有PK的记录时,click的旧值应该增加7(或3)。如您所见,每行的增量值不同。当前查询始终覆盖旧值。请帮助修改此查询。

1 个答案:

答案 0 :(得分:2)

VALUES必须是文字值,而不是列的引用:

INSERT INTO `stats` (`id`,`clicks`) VALUES 
  (1, 7),
  (2, 3)
  ON DUPLICATE KEY UPDATE `clicks`=`clicks` + VALUES(`clicks`)