ホームページ >データベース >mysql チュートリアル >無限に実行される JOIN を使用した Oracle UPDATE クエリを修正する方法
結合を使用した Oracle Update クエリ
次の Oracle Update クエリについて考えてみましょう。
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);
問題:
クエリは無期限に実行されます。サブクエリが t1 の更新された行ごとに 1 つの行を返すことを保証する条件が欠落しています。
解決策:
問題を解決するには、条件を追加する必要があります。をサブクエリに追加して、t1 内の行をサブクエリ内の行と関連付けます。たとえば、次の条件を使用できます:
AND t1.some_key = t2.some_key
結果の更新されたクエリは次のようになります:
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);
追加の考慮事項:
以上が無限に実行される JOIN を使用した Oracle UPDATE クエリを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。