2010-12-03 31 views
0

我昨天問過這個問題:插入選擇對重複的關鍵問題

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; 

所以,如果我得到:

 
    id----groupId----productId----quantity 
    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----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); 

我認爲這會做你所需要的。