ホームページ >データベース >mysql チュートリアル >別のテーブルの値を使用して Oracle テーブルのデータを更新するにはどうすればよいですか?

別のテーブルの値を使用して Oracle テーブルのデータを更新するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-22 02:52:13829ブラウズ

How Can I Update an Oracle Table's Data Using Values from Another Table?

Oracle SQL: 別のテーブルの値を使用したテーブル データの更新

多くの場合、データベース管理では、あるテーブルのデータを別のテーブルから取得した値で更新する必要があります。 これを 2 つのサンプル テーブルで説明してみましょう:

表 1:

<code>id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf</code>

表 2:

<code>id    name    desc
-----------------------
1     x       123
2     y       345</code>

私たちの目標は、Table 1name 列と desc 列を Table 2 のデータで更新し、id 列で一致させることです。望ましい結果:

表 1 (更新):

<code>id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf</code>

Oracle SQL は、このタイプの相関更新のための効率的な方法を提供します。

方法 1: 相関サブクエリ

このアプローチでは、UPDATE ステートメント内で相関サブクエリを使用します。

<code class="language-sql">UPDATE table1 t1
   SET (name, desc) = (SELECT t2.name, t2.desc
                         FROM table2 t2
                        WHERE t1.id = t2.id)
 WHERE EXISTS (
    SELECT 1
      FROM table2 t2
     WHERE t1.id = t2.id );</code>

このクエリは、Table 1 内に一致する id が存在する Table 2 内の各行を更新します。

方法 2: 共通テーブル式 (CTE) を使用する

また、結合によってキーが保存されたビューが作成される場合、CTE はよりクリーンなソリューションを提供します。

<code class="language-sql">UPDATE (SELECT t1.id, 
               t1.name name1,
               t1.desc desc1,
               t2.name name2,
               t2.desc desc2
          FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id)
   SET name1 = name2,
       desc1 = desc2;</code>

このメソッドは、両方のテーブルの関連フィールドを組み合わせた一時ビューを (CTE を使用して) 構築し、このビューで更新を実行します。

どちらの方法も、Table 1 のデータに基づいて Table 2 を効果的に更新し、Oracle SQL でのデータ操作の柔軟な手法を示します。

以上が別のテーブルの値を使用して Oracle テーブルのデータを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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