极品分享

SqlServer2008及以上版本,使用meger into如果存在则更新不存在则插入。

一、单表操作,如果该表中主键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...);






















2017-04-14 0 /
NET学习
/
标签: 

评论回复

回到顶部