【问题标题】:Insert select ON DUPLICATE KEY question插入选择 ON DUPLICATE KEY 问题
【发布时间】:2010-12-03 09:26:26
【问题描述】:

我昨天问了这个问题:

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----数量 1 ----- 2 ------------2--------------5 2 ----- 3 ------------2--------------5

其中 groupId 和 productId 是唯一的。

我执行插入-选择-重复查询:

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----数量 1 ----- 2 ------------2--------------5 2 ----- 3 ------------2--------------10

有人知道这是否可行吗?

【问题讨论】:

    标签: mysql sql duplicates


    【解决方案1】:
       INSERT 
         INTO product_quantity (groupId, productId, quantity) 
       VALUES (3, productId, quantity) 
         FROM product_quantity  
           ON DUPLICATE KEY 
       UPDATE quantity = 5 + VALUES(quantity); 
    

    我认为这可以满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2018-05-01
      • 2018-04-07
      • 1970-01-01
      • 2011-06-29
      • 2011-04-22
      相关资源
      最近更新 更多