我有几个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”? 如果我想用插入值中的值更新重复行。
因为我不能在其中放置一个静态数字,因为它与多个插入中的每一行插入不同
答案 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)