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);
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
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);
Zusätzliche Überlegungen:
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!