Merge

2014-09-05 5 views
1

Я пытаюсь использовать синтаксис объединения, но он не работаетMerge

Пожалуйста, помогите мне с этим

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

Похоже, вы смущены с источником & цель. После имя таблицы не требуется и убедитесь, что вы обновляете таблицу 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);