插入选择ON DUPLICATE KEY问题

时间:2010-12-03 09:26:27

标签: mysql sql duplicates

昨天我问了这个问题:

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

任何人都知道这是否可能?

1 个答案:

答案 0 :(得分:0)

   INSERT 
     INTO product_quantity (groupId, productId, quantity) 
   VALUES (3, productId, quantity) 
     FROM product_quantity  
       ON DUPLICATE KEY 
   UPDATE quantity = 5 + VALUES(quantity); 

我认为这会做你需要的。