Dummes, aber einfaches Beispiel: Angenommen, ich habe eine Tabelle 'Artikel', in der ich die Gesamtsummen der empfangenen Artikel aufbewahre.
Item_Name Items_In_Stock
Der Artikelname ist hier der Primärschlüssel. Wie erreiche ich Folgendes, wenn ich Artikel A in Menge X erhalte?
Wenn der Artikel nicht vorhanden ist, füge ich einen neuen Wert für Artikel A ein und setze die Artikel auf Lager auf X. Wenn ein Datensatz vorhanden ist, in dem Artikel auf Lager Y waren, lautet der neue Wert für Artikel auf Lager (X + Y).
INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A' )
Mein Problem ist, dass ich mehrere Spalten in meiner tatsächlichen Tabelle habe. Ist es eine gute Idee, mehrere select-Anweisungen in den Update-Teil zu schreiben?
Natürlich kann ich das im Code machen, aber gibt es einen besseren Weg?
ON DUPLICATE KEY UPDATE new_items_count = new_items_count + 27
. Da Sie keine anderen Spalten veröffentlicht haben, ist es schwierig, Ihre Frage zu beantworten, da das erwartete Verhalten unbekannt ist. Was machst du mit anderen Spalten? Einige Zahlen aktualisieren oder?