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;
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
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!