1つのテーブルAに列(id、field_1、field_2)があり、別のテーブルBに列(id、field_2)があります
次に、テーブルBをAにマージします。つまり、テーブルAのfield_2をテーブルBの値に更新します。それを実装するにはどうすればよいですか?ところで私はOracleを使用しています
ありがとう
相互に関連するサブクエリ(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
ない正確にこれで何をしたいのかは確かですが、これは1回限り、またはスケジュールされたジョブで継続的に機能するはずです。
UPDATE table_a a
SET field_2 = ( SELECT field_2
FROM table_b b
WHERE b.id = a.id )
;
これで、上記が実行されるたびに、テーブルのすべての行にわたって実行されます。これが常に行う必要がある場合は、別の方法をお勧めしますが、1回限りのテーブルまたは非常に小さなテーブルの場合はそれで十分です。
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>
TableBのfield_2が更新されるたびにtableAを更新するトリガーをtableBに作成できます。トリガーの作成の詳細については、ここを確認してください- http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ