菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

sqlserver MERGE INTO 用法

6619人阅读 2022/12/10 12:49 总访问:961106 评论:0 收藏:0 手机
分类: SQL

前言


 

if not exists 判断 后面括号中的语句是否可以查询到数据, 如果能查询到则执行else后面的 update语句

如果 查询不到 则会执行 insert 语句 ,注意, 前面括号中的查询语句条件 和 后面的 update语句的条件要一致, update语句 中 set的数据要和where 后面的条件一致, 否则 执行两次会插入一条重复数据.

这个语法对于SQL只能更改一条语句,并且Oracle不能使用
所以就有了Merge intoOracle 9i引入的功能)语法 

If not exists 用法

  1. if not exists (select id,abc,def from A_TEST where id = ‘A’ and abc = ‘B’)
  2. INSERT INTO A_TEST (id,abc,def,ddd) VALUES(‘A’,’B’,’C’,’D’)
  3. else update A_TEST set id = ‘A’,abc=’B’ ,def=’def’,ddd=’ddd’ where id = ‘A’ and abc = ‘B’

MERGE INTO 用法

  1. merge into 目标表 a
  2.  
  3. using 源表 b
  4.  
  5. on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)  
  6.  
  7. when matched then update set a.字段=b.字段 --目标表别称a和源表别称b都不要省略
  8.  
  9. when  not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略


下边放一块实战代码

  1.   MERGE INTO T_JCZX_DTXX_SYDT a
  2. USING ( select * from  T_JCZX_ZSJ_XMK)  b
  3. ON (a.XMMC = b.XMMC) 
  4. WHEN matched  THEN update set a.[XMMC]=b.XMMC ,a.[XMLX] =b.[XMLX],a.[XMZT]=b.[XMZT],a.[YWLY] =b.[YWLY],a.[XMTRJE]=b.[XMTRJE],a.[XMSSOY]=b.XMSSQY_Sheng,a.[XMJLID] =b.XMJL,a.XMJLMC = b.XMJLName,a.GSNY = b.LXRJ
  5. WHEN NOT matched  THEN  
  6.     insert ([ID]
  7.       ,[BaseIsDeleted]
  8.       ,[BaseCreatorID]
  9.       ,[BaseModifierID]
  10.       ,[BaseCreator]
  11.       ,[BaseModifier]
  12.       ,[BaseCreateTime]
  13.       ,[BaseModifyTime]
  14.       ,[XMMC]
  15.       ,[XMLX]
  16.       ,[XMZT]
  17.       ,[YWLY]
  18.       ,[XMTRJE]
  19.       ,[XMSSOY]
  20.       ,[XMJLID]
  21.       ,[XMJLMC]
  22.       ,[XMJD]
  23.       ,[XMWD]
  24.       ,[GSNY] ) values( newID() ,[BaseIsDeleted]
  25.       ,[BaseCreatorID]
  26.       ,[BaseModifierID]
  27.       ,[BaseCreator]
  28.       ,[BaseModifier]
  29.       ,[BaseCreateTime]
  30.       ,[BaseModifyTime]
  31.       ,b.[XMMC]
  32.       ,b.[XMLX]
  33.       ,b.[XMZT]
  34.       ,b.[YWLY]
  35.       ,b.[XMTRJE]
  36.       ,b.XMSSQY_Sheng 
  37.       ,b.XMJL  
  38.       ,b.XMJLName  
  39.       ,0
  40.       ,0
  41.       ,b.LXRJ );


评价

C ?、?? 问号和2个问号的用法(类型?、对象?)

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

C out、ref关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...

网页上传文件断点续传的实现,无视文件大小上传,以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

ado.net访问数据库的基本用法

放回datatable//1:开打数据库的连接 using(SqlConnectionconn=newSqlConnection("server=.;uid=sa;pwd=123456;databa...

Oracle中MERGE INTO,for,start with,decode用法

1. MERGEINTO:MERGEINTOT_TD_BU_MODIFY_NOTICE_LSA USING( selectMODIFY_NOTICE_ID,REJECT_REASONfromT_TD_BU_MODIFY_NOT...

asp.net mvc @helper用法

@helper可以在视图定义一个公共块,这样就可以实现代码的重复调用下面来一个很简单的例子:就是输出一个list的数据。实际项...

Vue.js if用法

vue.js if可以做一些判断例如我们要把下面这个输出varvm=newVue({ el:"#content", data:{ titles:["小明...

js splice的简单用法,操作数组。js删除数组,js根据下标删除数组。js更新数组

splice就是对数组的增删改操作简单解释一下参数:1: 开始位置2: 要删除的个数3-n: 要添加的元素直接贴代码:<script&g...

json介绍与基本用法

json介绍:Javascript object natationjs对象记号,用来标识对象格式就是一个键值对的形式作用:主要作为数据传输,也可以...

bootstrap模板 form的一点布局用法

bootstrap form的布局可以在form stuff里边看到,我们就复制form layouts里边的吧复制这里的我们实现一个简单的资源上传的页...

Action与Func的用法-----委托

Action:运用于没有返回值有参可以进行在方法里面进行有参传值。 3.实例Func:1.主要运用于有参有返回值Action于Funcye通过...

Lambda表达式用法

无参无返回值:2.有参无返回值:3.有参有返回值:4.2个参数有一个返回值:5.通过表达式对泛型数据进行查询示例1:模糊查询示例2...

abp框架的介绍和基用法

一、什么是ABP框架? ABP框架全称为“ASP.NETBoilerplateProject”,中文翻译为“ASP.NET样板项目”,诞生的主要目的就是...

js !!,js两个感叹号的用法

可以为了巧妙的实现为空验证,比较简洁的实现可以直接判断if(a!=null&&typeof(a)!=undefined&&a!='&#3...

c++switch用法

switch语句的语法如下: switch(表达式) //表达式的类型只能是 整形 、 字符型 、 枚举类型 { case 常量表...