SQL を使用して別のテーブルから Oracle テーブル データを更新する
リレーショナル データベース管理では、多くの場合、あるテーブルのデータを別のテーブルの値を使用して更新する必要があります。これは、SQL UPDATE ステートメントを使用して実行できます。
シーン:
次のデータを含む 2 つのテーブル、表 1 と表 2 について考えます。
<code>表 1: id name desc ----------------------- 1 a abc 2 b def 3 c adf 表 2: id name desc ----------------------- 1 x 123 2 y 345</code>
ターゲット:
両方のテーブルの id 列が一致する場合、テーブル 1 をテーブル 2 の name 列と desc 列で更新します。期待される結果は次のとおりです:
<code>表 1: id name desc ----------------------- 1 x 123 2 y 345 3 c adf</code>
オプション 1: 関連アップデート
Oracle SQL では、関連する更新が利用可能です:
<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>
手順:
このクエリは、サブクエリを使用して、一致する ID に基づいて table2 から対応する name と desc の値を取得し、table1 の更新を実行します。 WHERE EXISTS 句により、table2 に一致する行がある table1 の行のみが更新されます。
オプション 2: JOIN ベースの更新
結合によって生成された結果がキーを保持すると仮定すると、次の更新ステートメントを使用できます:
<code class="language-sql">UPDATE (SELECT t1.id, t1.name name1, t1.desc desc1, t2.name name2, t2.desc desc2 FROM table1 t1, table2 t2 WHERE t1.id = t2.id) SET name1 = name2, desc1 = desc2</code>
手順:
このクエリは結合ビューの更新を実行し、table1 の name 列と desc 列を table2 の対応する ID と一致する値に効果的に更新します。
以上がSQL を使用して別のテーブルから Oracle テーブルのデータを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。