2014-09-05 1 views
1

내가 병합 구문의 사용을 만들려고 노력하고 있지만이병합 구문 오류

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

내 대답은 귀하의 질문에 대답합니까? 그렇다면 수령을 고려하십시오. – zhongxiao37

답변

2

저를 도와주세요

를 작동하지 않는 것은 보이는 출처는 &입니다. when matched then update 이후에 테이블 이름이 필요하지 않으며 source 테이블 대신 target 테이블을 업데이트하고 있는지 확인하십시오.

이 코드를보십시오 :

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);