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

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

Patricia Arquette
リリース: 2024-12-24 12:34:29
オリジナル
1048 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート