我有两个表 - T1,T2 具有相同的表结构。如果 T2 中不存在新行,我想从 T1 中插入 T2 中的新行,并且还更新 T2 中主键上的现有数据。有人可以帮助我使用 MERGE 的 SQL。
TIA
我有两个表 - T1,T2 具有相同的表结构。如果 T2 中不存在新行,我想从 T1 中插入 T2 中的新行,并且还更新 T2 中主键上的现有数据。有人可以帮助我使用 MERGE 的 SQL。
TIA
因为您没有提供架构并假设 id 不是身份:
create table t1 (id int, txt varchar(5))
create table t2 (id int, txt varchar(5))
merge t2 as tgt
using t1 as src on tgt.id = src.id
when not matched by tgt then
insert (id,txt)
select src.id, src.txt;
假设目标的表名是 T2,源是 T1 对于虚拟表,让我们看看假设两个表都有两列 - 代码和描述(代码作为主键)。以下是代码 PS-Merge 查询必须使用分号
Merge T2 as T
USING T1 AS S
ON T.Code=S.Code
WHEN MATCHED
THEN UPDATE SET description=S.description
WHEN NOT MATCHED BY TARGET
THEN INSERT (T.code,T.description) VALUES (S.code,S.description);
--WHEN NOT MATCHED BY SOURCE
-- THEN DELETE;