![]() |
Datenbank: MySQL • Version: 4.1.9 • Zugriff über: UniDAC
[MySQL] Multiple-Row-Update
Mahlzeit!
Ich müsste in einer Tabelle mehrere Spalten mehrerer Datensätze in einem Statement updaten. Wie das prinzipiell geht habe ich ![]()
Code:
Das setzt in der Tat die Spalte "color" in der Zeile mit id 2 auf 255 und die Spalte "position" in Zeile 1 auf 5. Aber! Es setzt leider auch die "position" in Zeile 2 und "color" in Zeile 1 auf 0. Ich möchte jedoch die nicht vom CASE erfassten Fälle unverändert lassen. Ich hätte das auch so erwartet, aber MySQL scheint mich erneut überraschen zu wollen.
UPDATE `mytable` SET
`color` = CASE id WHEN 2 THEN 255 END, `position` = CASE id WHEN 1 THEN 5 END Das ist ein Minimalbeispiel da oben, es können auch gut und gerne Kombinationen von ein paar zig Zeilen und Spalten bunt gemischt auftauchen, so dass das "aufblähen" aller CASEs auf alle IDs eher unschön wäre. Gibt's da nicht einen hübschen Schalter oder eine Option, wie man dieses Verhalten etwas erwartungsgemäßer bekommt? Dankschö! |
AW: [MySQL] Multiple-Row-Update
Okay, selbst drauf gekommen. Letztlich simpel:
Code:
Sorry!
UPDATE `mytable` SET
`color` = CASE id WHEN 2 THEN 255 ELSE `color` END, `position` = CASE id WHEN 1 THEN 5 ELSE `position` END |
AW: [MySQL] Multiple-Row-Update
Warum machst Du es nicht auf die einfache Tour
Code:
Damit hast Du auch wildeste Kombinationen im Griff. Nicht sehr elegant, aber problemlos nachvollziehbar.
Update myTable Set Color=255 where id=1;
Update myTable Set position=255 where id=2; Gruß K-H |
AW: [MySQL] Multiple-Row-Update
Zitat:
|
AW: [MySQL] Multiple-Row-Update
So ein paar hundert Updates pro Sekunde dauern einfach zu lange, ein einzelnes Statement ist dagegen ziemlich flott durch. Auch muss etwas weniger übers Netz gepumpt werden, dass ohnehin schon anderweitig auch gut Traffic bekommt.
Noch flotter wird das ganze, wenn man noch mit einem "WHERE id IN (1, 2)" die Sätze einschränkt, die gegen die CASEs geprüft werden. Reine Performanceentscheidung gewesen :) |
AW: [MySQL] Multiple-Row-Update
Man lernt nie aus
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz