我正在尝试使用合并语法,但它无法正常工作
请帮我解决这个问题
create table tgt(id int,name varchar(10),age int)
insert into tgt values(1,'x',21),(2,'y',22),(3,'z',23)
create table src(id int,name varchar(10),age int)
insert into src values(1,'x1',24),(2,'x2',27),(4,'y1',27),(5,'z1',29),(3,'z',23)
merge tgt t using src s
on t.id=s.id
when matched then update src s
set s.id=t.id,
s.name=t.name,
s.age=t.age
when not matched then
insert(id,name,age) values(s.id,s.name,s.age);
错误消息
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near 'src'.
答案 0 :(得分:2)
看起来你与source&混淆了目标。 when matched then update
后无需使用表名,并确保您正在更新target
表而不是source
表。
尝试以下代码:
create table tgt(id int,name varchar(10),age int)
insert into tgt values(1,'x',21),(2,'y',22),(3,'z',23)
create table src(id int,name varchar(10),age int)
insert into src values(1,'x1',24),(2,'x2',27),(4,'y1',27),(5,'z1',29),(3,'z',23)
merge tgt t using src s
on t.id=s.id
when matched then
update
set t.id=s.id,
t.name=s.name,
t.age=s.age
when not matched then
insert(id,name,age) values(s.id,s.name,s.age);