Multiupdate in Abhängigkeit unterschiedlicher Bedingungen

Tyg3r

Erfahrenes Mitglied
Hallo zusammen,

ich benötige Rat von Euch.

Und zwar möchte ich wissen, ob es bei MySQL die Möglichkeit gibt, mehrere Update-Anweisungen in einem Query durchzuführen.

Ich möchte damit folgede Problematik umgehen:
Angenommen wir haben eine Tabelle mit Kundendaten und wir möchten die Vornamen zweier Datensätze tauschen (der Sinn sei Nebensache, es geht mir um die Funktionalität).
Also:
kndnr | vorname | nachname
1 | vorname1 | nachname1
2 | vorname2 | nachname2

Ich schreibe mal ein Query um das Ziel zu verdeutlichen:
UPDATE tab_user SET vorname = 'vorname1' WHERE vorname = 'vorname2' AND SET vorname = 'vorname2' WHERE vorname = 'vorname1'
(Funktioniert in der Form natürlich nicht.)

Also es soll ein Update der Felder in Abhängigkeit des aktuellen Wertes des Feldes erfolgen.

Warum ich danach frage ist folgender Grund:
Es ist nicht möglich die Updates hintereinander (also getrennt) durchzuführen, da sich beim ersten Update der Feldwert und somit die Bedinungung für das zweite Update ändern würde.

Möglich ist es natürlich zuvor die Datensätze zu cachen (in meinem Fall mit PHP), die Änderungen dort vorzunehmen und Anschließend die Tabelle zu aktualisieren.

Mir geht es grundzätzlich aber um die Möglichkeiten von MySQL bzw. wie man mein geschildertes Verfahren denn betitelt um gezielter danach suchen zu können.

Ich bedanke mich für Eure Hilfe!
Grüße
 
Zuletzt bearbeitet:
Und zwar möchte ich wissen, ob es bei MySQL die Möglichkeit gibt, mehrere Update-Anweisungen in einem Query durchzuführen.

das stimmt erstmal.


Du könntest max die zuänderen Dateien in einer temporären Tabelle zwischenspeichern und dann über diese Tabelle alles mit einen Query updaten.

Wäre aber wohl recht umständlich finde ich.
 
Hallo,

diese Operation geht nicht in einem Schritt, wenn doch würde es mich auch interessieren.

Solche einen Wertetausch realisiere ich immer mit einer Temporären Tabelle. Meist sind die Bedingungen bis mit zum Ergebins kommt, das man schreiben möchte sehr komplex.

Ein Lösungsweg könnte sein:
1. Create Table kundendaten2 (gleiche Struktur wie kundendaten)
2. Insert der Kundendaten nach Kundendaten2
3. Update der Vornamen (je Kundennummer)
4. Update der Kundendaten
5. Löschen der Temporären Tabelle

Schritt 3 ist nur exemplarisch für alle Veränderungen die ich ja auf der Sicheurng machen kann ohne das Original zu "beschädigen", ich nenne das Daten zusammenbasteln. Getreu dem Motto was nicht passt wird passend gemacht.

In MYSQL müsste man auch 1 + 2 zusammenfassen können d.h. SELECT * INTO oder CREATE TABLE AS SELECT da bin ich mir nicht sicher das müsste man prüfen noch.

Mit dem geschilderten verfahren, kannst du sehr mächtige Datenveränderungen vornehmen.

Gruß
 
Zurück