Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

[MySQL] Multiple-Row-Update

  Alt 20. Jul 2011, 12:28
Datenbank: MySQL • Version: 4.1.9 • Zugriff über: UniDAC
Mahlzeit!

Ich müsste in einer Tabelle mehrere Spalten mehrerer Datensätze in einem Statement updaten. Wie das prinzipiell geht habe ich hier her, und das tut an sich auch prima. Allerdings behandelt der Artikel nicht den Fall, dass ggf. nicht alle Cases alle vorkommenden "id"s auflisten könnten. Beispiel:
Code:
UPDATE `mytable` SET
  `color` = CASE id
    WHEN 2 THEN 255 
  END,
  `position` = CASE id
    WHEN 1 THEN 5 
  END
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.
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ö!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat