Вы можете установить product_id и user_id в качестве первичного ключа или уникального ключа в таблице, а затем использовать INSERT .. ON DUPLICATE KEY UPDATE.Вы можете найти более подробную информацию об этом здесь .
Это будет выглядеть примерно так:
INSERT INTO t1 (id, product_id, user_id, quantity) VALUES (2,450,56,3)
ON DUPLICATE KEY UPDATE quantity = quantity + 3;
В качестве альтернативы вам придется написать свой собственный merge оператор (MySql не поддерживает слияние, но вы можете его подделать)
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_updateValue`(IN prm_productid INT, IN prm_userid INT, IN prm_quantity INT)
BEGIN
-- Check that the case actually exists first.
DECLARE vExists INT;
SELECT COUNT(1) INTO vExists FROM YourTable WHERE product_id = prm_orderid AND user_id = prm_userid;
IF vCaseExists = 1 THEN
UPDATE YourTable SET quantity = prm_quantity WHERE product_id = prm_orderid AND user_id = prm_userid;
ELSE
INSERT INTO YourTable (id, product_id, user_id, quantity) VALUES (2,450,56,3);
END IF;
END$$
DELIMITER ;