我有一个表 ( tblA
) 和一个查询 ( queryB
)。的输出queryB
与 的架构匹配tblA
。我想更新tblA
,使其内容等于queryB
一个明显的解决方案可能是:
TRUNCATE TABLE tblA
INSERT INTO tblA
(queryB)
但是,我想尽量减少我所做的删除和插入的次数。
将有三种情况,其结果来自queryB
:
- 在
queryB
,不在tblA
:插入 - 在
queryB
, 在tblA
: 什么都不做 - 在
tblA
,不在queryB
:删除
到目前为止,我发现 MS SQL 的 MERGE 支持一个[NOT] PRESENT IN TARGET/SOURCE
非常适合这个的 - 但还没有找到一个 Oracle 等价物。
有没有一种优雅的方式来实现这一目标?