Oracle SQL: Aktualisieren Sie eine Tabelle mit Daten aus einer anderen Tabelle
Tabelle 1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
Tabelle 2:
id name desc
-----------------------
1 x 123
2 y 345
In oracle SQL, wie führe ich ein sql update Abfrage aktualisieren können Tabelle 1 mit Tabelle 2 name
und desc
mit der gleichen id
? So das Ergebnis ich bekommen würde ist
Tabelle 1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
Frage ist entnommen aus update einer Tabelle mit Daten aus einer anderenaber speziell für die oracle SQL.
InformationsquelleAutor der Frage Muhd | 2011-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sogenannte korrelierte update
Vorausgesetzt, die join-Ergebnisse in einer key-preserved-Ansicht, Sie könnten auch
InformationsquelleAutor der Antwort Justin Cave
Versuchen Sie dies:
InformationsquelleAutor der Antwort Adrian
versuchen
InformationsquelleAutor der Antwort Yahia
Hier scheint zu sein, eine noch bessere Antwort, die mit " in " - Klausel, die ermöglicht, dass mehrere Schlüssel für die Verknüpfung:
Das vollständige Beispiel ist hier:
http://forums.devshed.com/oracle-development-96/how-to-update-from-two-tables-195893.html
Das Rindfleisch ist, mit den Spalten, die Sie verwenden möchten, als den Schlüssel in Klammern in der where-Klausel vor " in " und haben die select-Anweisung mit den gleichen Spaltennamen in Klammern.
wo (column1,column2) in ( wählen Sie (column1,column2) aus der Tabelle wo "der Satz ich will" );
InformationsquelleAutor der Antwort ant
nie für mich gearbeitet, da nur erwartet 1 Wert - SQL-Fehler: ORA-01427: single-row subquery mehr als eine Zeile.
hier ist die Lösung:
So genau, Sie führen Sie es auf SQLDeveloper Arbeitsblatt. Sie sagen, es ist langsam, aber das ist die einzige Lösung, die für mich gearbeitet auf diesem Fall.
InformationsquelleAutor der Antwort Pau Karr
Wenn Ihr die Tabelle t1, und es ist backup-t2 haben viele Spalten, hier ist eine kompakte Weise, es zu tun.
Darüber hinaus, mein problem war, dass nur einige der Säulen wurden modifiziert und viele Zeilen hatte keine änderungen an diesen Spalten, also wollte ich, lassen Sie diese allein - im Grunde die Wiederherstellung einer Teilmenge von Spalten aus einer Sicherung auf die gesamte Tabelle. Wenn Sie wollen, einfach wieder alle Zeilen, überspringen Sie die where-Klausel.
Natürlich der einfachere Weg wäre, zu löschen und einfügen als auswählen, aber in meinem Fall brauchte ich eine Lösung mit nur updates.
Der trick ist, dass, wenn Sie wählen Sie * aus ein paar Tabellen mit doppelten Spaltennamen, die 2. wird benannt _1. Also hier ist was ich kam mit:
InformationsquelleAutor der Antwort Jim P
InformationsquelleAutor der Antwort Avila Theresa