2010-12-03 22 views
0

J'ai posé cette question hier.
donc j'ai trouvé que je pouvais le faire en faisant ceci:sélectionner ON KEY question DUPLICATE

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

Mais je veux la quantité à se mettre à jour en ajoutant la quantité à la quantité existsing déjà.

donc je veux quelque chose comme ceci:

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

Donc, si je suis arrivé:

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

Où groupId et productId sont uniques.

Et je fais la requête d'insertion-select-double:

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 doit ajouter la quantité sur la ligne 1 à la ligne 2, il ressemblerait à ceci:

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

Quelqu'un at-il une idée si c'est possible?

Répondre

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

Je pense que cela répondra à vos besoins.