Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So führen Sie einen UPSERT durch, damit ich im Aktualisierungsteil sowohl neue als auch alte Werte verwenden kann

Wie in meinem Kommentar erwähnt, müssen Sie die Unterauswahl nicht ausführen, um auf die Zeile zu verweisen, die dazu führt, dass ON DUPLICATE KEY ausgelöst wird. In Ihrem Beispiel können Sie also Folgendes verwenden:

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

Denken Sie daran, dass die meisten Dinge wirklich einfach sind. Wenn Sie sich dabei erwischen, etwas zu kompliziert zu machen, was einfach sein sollte, dann machen Sie es höchstwahrscheinlich falsch :)