web-dev-qa-db-ja.com

別のテーブルからテーブルを更新する方法

1つのテーブルAに列(id、field_1、field_2)があり、別のテーブルBに列(id、field_2)があります

次に、テーブルBをAにマージします。つまり、テーブルAのfield_2をテーブルBの値に更新します。それを実装するにはどうすればよいですか?ところで私はOracleを使用しています

ありがとう

29
zjffdu

相互に関連するサブクエリ(Kerriが推奨)の代替アプローチは、MERGEステートメントを使用することです。これはmightが副選択よりも効率的です(これは、両方のステートメント)。

MERGE INTO table_b 
USING 
(
  SELECT id,
         field_2
  FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE 
    SET table_b.field_2 = ta.field_2
30

ない正確にこれで何をしたいのかは確かですが、これは1回限り、またはスケジュールされたジョブで継続的に機能するはずです。

UPDATE table_a a
   SET field_2 = ( SELECT field_2
                     FROM table_b b
                    WHERE b.id = a.id )
;

これで、上記が実行されるたびに、テーブルのすべての行にわたって実行されます。これが常に行う必要がある場合は、別の方法をお勧めしますが、1回限りのテーブルまたは非常に小さなテーブルの場合はそれで十分です。

15
Kerri Shotts

User2の別のテーブルからuser1の1つのテーブルを使用して、これを正常に実行しました。

update user1.table1 a
set a.field1 = (
  select b.field1
  from user2.table2 b
  where a.field1=b.field1
)
where <condition for update user1.table1>
2
Siddik

TableBのfield_2が更新されるたびにtableAを更新するトリガーをtableBに作成できます。トリガーの作成の詳細については、ここを確認してください- http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ

1
SqlSandwiches