ホームページ >データベース >mysql チュートリアル >無限に実行される JOIN を使用した Oracle UPDATE クエリを修正する方法

無限に実行される JOIN を使用した Oracle UPDATE クエリを修正する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 12:34:291023ブラウズ

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

結合を使用した 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);

追加の考慮事項:

  • 上記の変更により、追加された条件を満たす t1 行ごとにサブクエリが 1 つの行を返すようになります。条件。
  • t1 内のすべての行を更新することが意図されていない場合は、追加の WHERE 句をメインの UPDATE ステートメントに追加して、更新する行を指定できます。

以上が無限に実行される JOIN を使用した Oracle UPDATE クエリを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。