2010-12-03 2 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; 

Так что, если я получил:

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

Где идентификатор_группы и PRODUCTID уникальны.

И я сделать Insert-выбрать-дубликата запрос:

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

Я думаю, что это сделает то, что вам нужно.

Смежные вопросы