【发布时间】:2023-01-13 19:39:35
【问题描述】:
我有一个包含一些数据的表 T1,它最初使用查询 Q1 来更新它。现在我正在使用相同的查询 Q1 并每周在表 T2 中填充数据。T2 就像一个临时表来保存最新数据。 最终目标是让 T1 获得来自 T2 的所有更新,其中 FINDING_DATE 根据来自 T2 的最新信息进行更新。
SQL> select * from T1;
ID NAME FINDING_DATE
----- ------------------------------ --------------------
10 vivek 29-12-2022
20 anand 29-12-2022
30 vinod 29-12-2022
40 nandu 29-12-2022
50 sri 29-12-2022
SQL> select * from T2;
ID NAME FINDING_DATE
----- ------------------------------ --------------------
10 vivek 06-01-2023
30 vinod 06-01-2023
40 nandu 06-01-2023
50 sri 06-01-2023
60 nani 06-01-2023
使用以下查询,我能够将新数据更新到 T1:
insert into T1 select * from T2 where ID in
(select ID from T2
minus
select ID from T1);
SQL> select * from T1;
ID NAME FINDING_DATE
----- ------------------------------ --------------------
10 vivek 29-12-2022
20 anand 29-12-2022
30 vinod 29-12-2022
40 nandu 29-12-2022
50 sri 29-12-2022
60 nani 06-01-2023
这里只插入了一条新记录,ID=20 的记录没有被删除。FINDING_DATE 也没有更新。
从 T2 到 T1 获取所需数据更新的最佳方法是什么。
【问题讨论】: