Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Daten einer Oracle-Tabelle mithilfe von Werten aus einer anderen Tabelle aktualisieren?

Wie kann ich die Daten einer Oracle-Tabelle mithilfe von Werten aus einer anderen Tabelle aktualisieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-22 02:52:13829Durchsuche

How Can I Update an Oracle Table's Data Using Values from Another Table?

Oracle SQL: Tabellendaten mithilfe von Werten aus einer anderen Tabelle aktualisieren

Häufig erfordert die Datenbankverwaltung die Aktualisierung der Daten einer Tabelle mit Werten aus einer anderen. Lassen Sie uns dies anhand von zwei Beispieltabellen veranschaulichen:

Tabelle 1:

<code>id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf</code>

Tabelle 2:

<code>id    name    desc
-----------------------
1     x       123
2     y       345</code>

Unser Ziel ist es, die Spalten Table 1 und name von desc mit Daten aus Table 2 zu aktualisieren, die mit der Spalte id übereinstimmen. Das gewünschte Ergebnis:

Tabelle 1 (aktualisiert):

<code>id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf</code>

Oracle SQL bietet effiziente Methoden für diese Art von korreliertem Update:

Methode 1: Korrelierte Unterabfrage

Dieser Ansatz verwendet eine korrelierte Unterabfrage innerhalb der UPDATE-Anweisung:

<code class="language-sql">UPDATE table1 t1
   SET (name, desc) = (SELECT t2.name, t2.desc
                         FROM table2 t2
                        WHERE t1.id = t2.id)
 WHERE EXISTS (
    SELECT 1
      FROM table2 t2
     WHERE t1.id = t2.id );</code>

Diese Abfrage aktualisiert jede Zeile in Table 1, in der ein passendes id in Table 2 vorhanden ist.

Methode 2: Verwenden eines Common Table Expression (CTE)

Alternativ bietet ein CTE eine sauberere Lösung, wenn der Join eine schlüsselerhaltende Ansicht erstellt:

<code class="language-sql">UPDATE (SELECT t1.id, 
               t1.name name1,
               t1.desc desc1,
               t2.name name2,
               t2.desc desc2
          FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id)
   SET name1 = name2,
       desc1 = desc2;</code>

Diese Methode erstellt eine temporäre Ansicht (unter Verwendung eines CTE), die relevante Felder aus beiden Tabellen kombiniert, und führt dann die Aktualisierung dieser Ansicht durch.

Beide Methoden aktualisieren effektiv Table 1 basierend auf Daten in Table 2 und demonstrieren flexible Techniken zur Datenbearbeitung in Oracle SQL.

Das obige ist der detaillierte Inhalt vonWie kann ich die Daten einer Oracle-Tabelle mithilfe von Werten aus einer anderen Tabelle aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn