Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment effectuer un UPSERT afin que je puisse utiliser à la fois les nouvelles et les anciennes valeurs dans la partie mise à jour

Comme mentionné dans mon commentaire, vous n'avez pas besoin de faire la sous-sélection pour faire référence à la ligne qui provoque le déclenchement de ON DUPLICATE KEY. Ainsi, dans votre exemple, vous pouvez utiliser ce qui suit :

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27

Rappelez-vous que la plupart des choses sont vraiment simples, si vous vous surprenez à trop compliquer quelque chose qui devrait être simple, alors vous le faites probablement de la mauvaise façon :)