SQL Merge 语法 单表查询

--项目中需要用到Merg语法,于是去网上查了资料,发现竟然都是多表查询,问题是我只有一张表,于是我纳闷了,后来我灵机一动,就搞定了!
--表名:t_login(登录表)
--字段:f_userName(用户名),f_status(登录状态 0=已登录)
--执行要求:用户登录时,如果用户存在则修改状态为0,如果不存在则添加一条记录
--定义参数:
declare @f_userName varchar(20)
set @f_userName='test'
declare @f_status int
set @f_status=0
--语法格式
merge into t_login as A
--联合查询,同时把t_login表当做条件表,需要用到的字段都查出来,这里直接把字段查询出来使用,其实,单表和多表是一个意思,传进来的只是参数,跟表无关
using (select @f_userName f_userName) as B--这里如果有多个条件,也可以使用逗号分隔,比如 select @f_userName f_userName,@f_status f_status
--判断条件
on (A.f_userName=B.f_userName) --如果有更多条件,可以用and加在这后面 比如 A.f_status=B.f_status
--如果存在
when matched then
--更新状态
update set f_status=0
--如果不存在
when not matched then
--插入新数据
insert (f_userName,f_status)
--最后这个分号必须要加,这是语法格式
values(B.f_userName,0);

原文地址:https://www.cnblogs.com/zhou88yu88/p/4425644.html