昨天我问了这个问题:
Insert select with a twist question
现在我遇到的问题是,如果数据是重复行,我希望数据自动更新 所以我发现我能做到这一点:
insert into product_quantity
(groupId, productId, quantity)
select 3, productId, quantity
from product_quantity
ON DUPLICATE KEY UPDATE
product_quantity.quantity = VALUES(product_quantity.quantity);
但我想通过将数量添加到已存在的数量来更新数量。
所以我想要这样的东西:
ON DUPLICATE KEY UPDATE
product_quantity.quantity =
VALUES(product_quantity.quantity) + product_quantity.quantity;
所以如果我得到了:
id----groupId----productId----quantity 1 ----- 2 ------------2--------------5 2 ----- 3 ------------2--------------5
其中groupId和productId是唯一的。
我执行Insert-select-duplicate查询:
insert into product_quantity
(groupId, productId, quantity)
select 3, 2, 5
from product_quantity
ON DUPLICATE KEY UPDATE
product_quantity.quantity = VALUES(product_quantity.quantity) + *OLD QUANTITY*;
MySql应该将第1行的数量添加到第2行,所以它看起来像这样:
id----groupId----productId----quantity 1 ----- 2 ------------2--------------5 2 ----- 3 ------------2--------------10
任何人都知道这是否可能?
答案 0 :(得分:0)
INSERT
INTO product_quantity (groupId, productId, quantity)
VALUES (3, productId, quantity)
FROM product_quantity
ON DUPLICATE KEY
UPDATE quantity = 5 + VALUES(quantity);
我认为这会做你需要的。