mysql在重复时插入和更新

时间:2013-05-12 12:37:22

标签: mysql sql insert on-duplicate-key

我有几个cols的表,我正在做一个乘数插入。

即:

INSERT INTO accounting_positions
KEYS (`date`, `customer`, `type`, `product`, `volume`, `payout`, `count`)
VALUES ('2012-01-10','10','regular','60sec',65,83,13),
('2012-01-10','10','regular','binary',15,83,13)
ON DUPLICATE KEY UPDATE volume=volume+CURRENT_COL_VAL;

我应该写什么而不是“CURRENT_COL_VAL”? 如果我想用插入值中的值更新重复行。

因为我不能在其中放置一个静态数字,因为它与多个插入中的每一行插入不同

1 个答案:

答案 0 :(得分:2)

看看mysql docu on insert-on-duplicate从那里你可以看到你可以使用这样的东西:

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

在你的情况下:

INSERT INTO accounting_positions
    (`date`, `customer`, `type`, `product`, `volume`, `payout`, `count`)
VALUES 
    ('2012-01-10','10','regular','60sec',65,83,13),
    ('2012-01-10','10','regular','binary',15,83,13)
ON DUPLICATE KEY UPDATE volume=volume+VALUES(volume);

将添加新值和旧值。如果您只希望给定的插入值覆盖该行,请执行:ON DUPLICATE KEY UPDATE volume=VALUES(volume)