2014-09-05 67 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 2014-09-09 07:29:31

回答

2

看起來你困惑與源&目標。 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);