recursives WHERE bei UPDATE

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

ZENeca

Grünschnabel
Server-Typ: MariaDB
Server-Version: 10.5.23-MariaDB-1:10.5.23+maria~ubu2004-log - mariadb.org binary distribution
Protokoll-Version: 10

weiß gar nicht welches ein sinnvoller Titel für diese Frage wäre...
Also, ich glaube nicht daß das machbar ist,
weil sich mal wieder die Katze in den Schwanz beißt
aber ich würde es doch gerne mal klären.
Ich versuche mal das Prinzip zusammen zu fassen

geht um ein UPDATE bei dem sich während des Vorgangs ergibt welche weitere Datensätze betroffen sind

Speziell:
Wenn eine Bedingung zutrifft einen Spaltenwert (update_col) zu ändern
sollen auch alle Spaltenwerte (update_col) geändert werden bei denen
einen anderer Spaltenwert (s_col) dieses Datensatzes auf andere zutrifft


Tabellen-Beispiel
Zeilew_cols_colupdate_col
111up_val
212
323up_val
421up_val
532
633up_val
741up_val
842

UPDATE tab SET update_col = up_val
SELECT s_col FROM tab AS t
WHERE w_col = 2 OR s_col = t.s_col
(funktioniert so natürlich nicht)

sollte dann die Zeilen 1, 3, 4, 6 und 7 betreffen

Also:
die erste WHERE Bedingung betrifft Zeile 3 und 4
dort hat s_col den Wert 3 bzw. 1 und jetzt will ich auch alle
Zeilen ändern bei denen der s_col-Wert auch 3 oder 1 ist
gibt es da irgend ein Lösung?

Wenn es dazu eine Abfrage gäbe wäre das sehr elegant,
sonnst müsste ich das halt auf zwei mal machen.

vielen Dank im Voraus
Zen
 
Zuletzt bearbeitet:
Interessante Sache. Das Problem, ich verstehe deine gewünschte Logik noch nicht ganz.
Also. Du gehst mit w_col = 2 an den Start. Daraus liest du die s_col aus. In dem Fall 1 und 3.
Dann sollen alle mit s_col in (1,3) angepasst werden.

Ist eigentlich einfach mit einem Subquery
SQL:
UPDATE my_table
SET update_col = 1234
WHERE s_col IN (
    SELECT s_col
    FROM my_table
    WHERE w_col=2
);
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück