Oracle-Tabellen mithilfe von Joins aktualisieren
Das Ziel besteht darin, eine Tabelle mithilfe eines Joins zu aktualisieren und auf den Fehler „ORA-00933: SQL-Befehl“ zu stoßen nicht ordnungsgemäß beendet.“
Dies geschieht, weil die bereitgestellte Abfrage syntaktisch nicht korrekt ist. Die Abfragelogik besteht darin, eine Summe aus mehreren durch gemeinsame Spalten verbundenen Tabellen zu berechnen und die Originaltabelle mit der berechneten Summe zu aktualisieren.
Um dieses Problem zu beheben, empfehlen wir stattdessen die Verwendung einer MERGE-Anweisung, die eine explizitere Möglichkeit bietet um Daten basierend auf Bedingungen zu aktualisieren. Die MERGE-Syntax stimmt effizienter mit den Geschäftsregeln überein.
Hier ist eine überarbeitete Abfrage mit der MERGE-Anweisung:
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;
Diese MERGE-Anweisung:
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich Oracle-Tabellen mithilfe von Joins korrekt und vermeide ORA-00933-Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!