私は2つのテーブルを持っています。
まあ言ってみれば:
Table T1 with columns id,ref,a1,b1,c1,d1,e1
Table T2 with columns id,ref,a2,b2,c2,d2,e2
その場合、 whereのT2(a2,c2,e2)
値に関していくつかの列を更新する必要があります。T1(a1,c1,e1)
T1.ref = T2.ref
ref=<certain value>
ref 列の特定の値について、各テーブルに多くのレコードがあります。
ref 列の特定の値について、T1に関してT2を更新したいと考えています。他のレコードは変更されません。
現在、 whereのすべての行を削除してT2
現在の行を挿入することでこれを行っています。T1
ref=<some value>
例: ref 値 = 5の場合
次に、これらの手順を実行します。
1. delete from T2 where ref=5;
2. insert into T2 (a2,c2,e2) select a1,c1,e1 from T1 where T1.ref = 5;
確かに、これは 2 つのテーブル間でデータを同期するための適切な方法ではありません。
Oracleでこれを達成するための効率的なソリューションを提案してください。
私は重要なポイントを逃したと思います。両方のテーブルには、各レコードを明確に識別する列が 1 つあります。したがって、T1に存在しないレコードをT2に入れたくありません。繰り返しますが、列「ref」の値に対して、両方のテーブルが複数のレコードを返し、各レコードには一意の識別列があります。T1 で識別されたこれらのレコードは、T2 にのみ存在する必要があります。
前もって感謝します!