一、单表操作,如果该表中主键ID已存在,则更新,不存在则插入。
1、创建表
create table [user] (id int, username varchar(20), password varchar(20)) insert into [user] values (1,'aaa','aaa')
2、目前表里存在id=1的那条数据,这个时候我如果插入一个用户名bbb,密码bbb的,id同样为1的用户
Merge Into [user] p using (select 1 id,'bbb' username,'bbb' password) s on p.id=s.id --括号里那些就是你输入的东西, When Matched Then Update set p.username=s.username,p.password=s.password When Not Matched Then Insert (id,username,password) values (id,username,password); select * from [user]
3、然后现在插入一条id为2,用户名密码都为ccc的用户
Merge Into [user] p using (select 2 id,'ccc' username,'ccc' password) s on p.id=s.id When Matched Then Update set p.username=s.username,p.password=s.password When Not Matched Then Insert (id,username,password) values (id,username,password);
二、关联字段的操作
Merge Into 被更新的表 p --从数据源查找编码相同的产品 using 主表 s on p.关联字段=s.关联字段 --如果编码相同,则更新目标表的名称 When Matched Then Update set P.某字段=s.某字段 --如果目标表中不存在,则从数据源插入目标表 When Not Matched Then Insert (字段1,字段2,字段3...) values (字段1,字段2,字段3...);
评论回复