Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich Oracle-Tabellen mithilfe von Joins korrekt und vermeide ORA-00933-Fehler?

Wie aktualisiere ich Oracle-Tabellen mithilfe von Joins korrekt und vermeide ORA-00933-Fehler?

Barbara Streisand
Freigeben: 2024-12-29 00:13:11
Original
401 Leute haben es durchsucht

How to Correctly Update Oracle Tables Using Joins and Avoid ORA-00933 Errors?

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;
Nach dem Login kopieren

Diese MERGE-Anweisung:

  • Führt a aus Tabellenverknüpfung, um die Summe für jede übereinstimmende Zeile zu berechnen.
  • Verwendet die ON-Klausel, um Zeilen basierend auf abzugleichen die ID-Spalte.
  • Aktualisiert die übereinstimmenden Zeilen in Tabelle 1, indem die berechnete Summe zur vorhandenen Spalte „total_adjusted_cost“ hinzugefügt wird.

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage