Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire un UPSERT in modo da poter utilizzare sia i valori nuovi che quelli vecchi nella parte di aggiornamento

Come accennato nel mio commento, non è necessario eseguire la sottoselezione per fare riferimento alla riga che causa l'attivazione di ON DUPLICATE KEY. Quindi, nel tuo esempio puoi usare quanto segue:

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

Ricorda che la maggior parte delle cose sono davvero semplici, se ti accorgi di complicare eccessivamente qualcosa che dovrebbe essere semplice, molto probabilmente lo stai facendo nel modo sbagliato :)