-1

我有两个表 - T1,T2 具有相同的表结构。如果 T2 中不存在新行,我想从 T1 中插入 T2 中的新行,并且还更新 T2 中主键上的现有数据。有人可以帮助我使用 MERGE 的 SQL。

TIA

4

2 回答 2

0

因为您没有提供架构并假设 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;
于 2016-05-07T16:17:19.573 回答
0

假设目标的表名是 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;
于 2018-12-10T15:40:56.437 回答