Heim > Datenbank > MySQL-Tutorial > Wie aktualisiert man Oracle-Werte mithilfe von Joins effizient?

Wie aktualisiert man Oracle-Werte mithilfe von Joins effizient?

DDD
Freigeben: 2024-12-24 14:03:10
Original
700 Leute haben es durchsucht

How to Efficiently Update Oracle Values Using Joins?

Oracle-Werte mit Join aktualisieren

Das Aktualisieren von Tabellen mithilfe von Joins kann manchmal zu Komplexitäten führen. Ein Beispiel dafür, dass Benutzer auf Ausnahmen stoßen, ist der Versuch, einen Betrag mithilfe eines Joins zu aktualisieren. Zum Beispiel:

UPDATE tab1
   SET tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total
 FROM table1 tab1, 
      (SELECT tab3.name, tab3.add, SUM(tab2.amount) AS total
         FROM table2 tab2,
              table3 tab3,
              table4 tab4
        WHERE tab2.id = tab3.id
          AND tab3.id = tab4.id
          AND tab4.indicator = 'Y'
        GROUP BY tab3.name, tab3.add ) t1
WHERE tab1.id = t1.id;
Nach dem Login kopieren

Das Ausführen dieser Abfrage kann zu folgendem Fehler führen: „SQL-Befehl nicht ordnungsgemäß beendet.“

Lösung mit Merge-Anweisung

Um dieses Problem zu beheben, sollten Sie stattdessen die Merge-Anweisung verwenden:

merge into table1 tab1 
using
(
SELECT tab3.name, tab3."add", SUM(tab2.amount) AS total
  FROM table2 tab2,
    table3 tab3 ,
    table4 tab4
  WHERE tab2.id        = tab3.id
  AND tab3.id            = tab4.id
  AND tab4.indicator             ='Y'
  GROUP BY tab3.name,
    tab3."add"
)t1
on(tab1.id      = t1.id)
when matched then 
update set tab1.total_adjusted_cost = tab1.total_adjusted_cost + t1.total
Nach dem Login kopieren

Die Merge-Anweisung ermöglicht präzisere und effizientere Aktualisierungen durch die Kombination der Anweisungen zum Einfügen, Aktualisieren und Löschen in einem einzigen Vorgang.

Das obige ist der detaillierte Inhalt vonWie aktualisiert man Oracle-Werte mithilfe von Joins effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage