0

我有几个列的表,我正在对其进行乘数插入。

IE:

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”?如果我想用插入的值更新重复的行。

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

4

1 回答 1

2

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

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)

于 2013-05-12T12:51:01.580 回答