2010-12-03 9 views
0

ONを選択し、私は昨日、この質問をした:挿入がDUPLICATE KEY質問

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); 

しかし、私は量が既にexistsing量に数量を追加することによって自分自身を更新したいです。

ON DUPLICATE KEY UPDATE  
product_quantity.quantity = 
    VALUES(product_quantity.quantity) + product_quantity.quantity; 

私が得ている場合:

は、だから私はこのような何かをしたい

のgroupIdと商品コードが一意である
 
    id----groupId----productId----quantity 
    1 ----- 2 ------------2--------------5 
    2 ----- 3 ------------2--------------5 

と私は挿入-選択-重複クエリを実行します。それは次のようになりますので、

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は、2行に1行に数量を追加する必要があります

 
    id----groupId----productId----quantity 
    1 ----- 2 ------------2--------------5 
    2 ----- 3 ------------2--------------10 

を誰もが持ってこれが可能であればアイデア?

答えて

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

これはあなたが必要とするものだと思います。

関連する問題