Heim > Datenbank > MySQL-Tutorial > Wie behebe ich eine Oracle UPDATE-Abfrage mit JOIN, die auf unbestimmte Zeit ausgeführt wird?

Wie behebe ich eine Oracle UPDATE-Abfrage mit JOIN, die auf unbestimmte Zeit ausgeführt wird?

Patricia Arquette
Freigeben: 2024-12-24 12:34:29
Original
1017 Leute haben es durchsucht

How to Fix an Oracle UPDATE Query with JOIN That Runs Indefinitely?

Oracle-Update-Abfrage mit Join

Betrachten Sie die folgende Oracle-Update-Abfrage:

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL);
Nach dem Login kopieren

Problem:

Die Abfrage wird aufgrund einer fehlenden Bedingung auf unbestimmte Zeit ausgeführt Stellen Sie sicher, dass die Unterabfrage für jede aktualisierte Zeile in t1 eine einzelne Zeile zurückgibt.

Lösung:

Um das Problem zu beheben, muss der Unterabfrage eine Bedingung hinzugefügt werden, um das zu korrelieren Zeilen in t1 mit denen in der Unterabfrage. Beispielsweise könnte die folgende Bedingung verwendet werden:

AND t1.some_key = t2.some_key
Nach dem Login kopieren

Die resultierende aktualisierte Abfrage würde so aussehen:

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL
    AND t1.some_key = t2.some_key);
Nach dem Login kopieren

Zusätzliche Überlegungen:

  • Die obige Änderung stellt sicher, dass die Unterabfrage eine einzelne Zeile für jede t1-Zeile zurückgibt, die den hinzugefügten Anforderungen entspricht Bedingung.
  • Wenn nicht beabsichtigt ist, jede Zeile in t1 zu aktualisieren, könnte der Haupt-UPDATE-Anweisung eine zusätzliche WHERE-Klausel hinzugefügt werden, um die zu aktualisierenden Zeilen anzugeben.

Das obige ist der detaillierte Inhalt vonWie behebe ich eine Oracle UPDATE-Abfrage mit JOIN, die auf unbestimmte Zeit ausgeführt wird?. 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