Oracle Update Tabelle von Tabelle

Hallo,

ich bin gerade dabei eine Skript für eine Oracle DB zu schreiben. In dem SQL-Skript passiert nichts anderes als das eine Kopie von einer Tabelle gemacht wird, die Tabelle geleert und dann eine Menge Inserts gemacht werden.Dann komm ich zu dem Punkt wo ich nicht weiterkomme. Ich will die alten Werte einer Spalte anhand der Spalte optkey „zurückschreiben“ aber leider funktioniert das nicht so ganz :frowning:
Wollte sowas wie

UPDATE sys\_opt SET optvalue=temp\_opt.optvalue WHERE sys\_opt.optkey=temp\_opt.optkey;

machen, aber leider keine Chance :frowning:

Weiß jemand, wie man sowas unter Oracle machen kann?

Danke und LG Matthias

Hi!

Das Ganze nennt sich Sub-Select und der Update-Befehl lautet folgendermaßen:

UDATE sys\_opt 
 SET optvalue=(select temp\_opt.optvalue 
 FROM temp\_opt
 WHERE sys\_opt.optkey=temp\_opt.optkey);

Grüße,
Tomh

Hab ich auch schon versucht, bekomme dann die Fehlermeldung das vom Subquery mehr als eine Zeile zurückkommt :frowning:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Wenn Tomh’s Statement (inkl. WHERE-Klausel) zu dem von dir beschriebenen Fehler führt bedeutet dass, das der temp_opt.optkey mit gleichem Wert mehrfach vorhanden ist. Entweder hast du ein Datenproblem und musst den / die Doppelten löschen oder du legst ein MIN() oder MAX() um die Selektion des Wertes. Je nachdem, was du willst.

Grüßt:
Guido

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich muss mich wirklich entschuldigen, es liegt wirklich ein Datenfehler vor und auf die Idee bin ich nicht gekommen :frowning:
Manche Fehler sucht man selbst leider ewig. Ein einfaches DISTINCT ist auch schon die abhilfe.

Danke trotzdem vielmals für die Hilfe
LG Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]