MSSQL MERGE语法
Merge的用法Merge可以完成以下功能:1、 两个表之间数据的更新2、 进行进销存更新库存3、 进行表之间数据的复制语法说明:1、 在语句结束后一定要用分号,否则会提示错误。2、 Merge后为目标表,Using后为数据源表3、 如果有两个When matched,则必须使用and来限定第一个子句,一个子句必须制定一个update,另一个必须制定delete4、 When not matched by target,这个子句处理存在于数据源之中,但不存在目标之中的数据行。5、 When not matched等价于When not matched by target6、 When not mathed by source,这个子句处理,存在于目标中,但是不存在数据表之中的数据行一、两个表之间数据的更新create table test1 (col1 int,col2 varchar(100))create table test2 (col3 int,col4 varchar(100)) insert into test1values(1,'wang'),(2,'trieagle')insert into test2(col3)values(1),(2)merge test2using test1on test1.col1=test2.col3when matched then update set col4=col2; select * from test2结果:col3 col41 wang2 trieagle二、进行进销存更新库存Trade表为模拟进出库记录,正数表示入库,负数表示出库create table stock(id int,qty int)create table trade(id int ,qty int)goinsert into stockvalues (1,10), (2,20)insert into tradevalues(1,10),(1,-5),(1,20),(2,10),(2,-30),(3,5) merge stockusing (select id,qty=sum(qty) from trade group by id) Kon stock.id=k.idwhen matched and (stock.qty+k.qty)=0 then deletewhen matched then update set stock.qty=stock.qty+k.qtywhen not matched by target then insert values(k.id,k.qty); select * from stock结果:id qty1 353 5三、进行表之间数据的复制drop table test1drop table test2create table test1 (col1 int,col2 varchar(100))create table test2 (col3 int,col4 varchar(100)) insert into test1values(1,'wang'),(2,'trieagle') merge test2using test1 on test1.col1 =test2.col3when matched and col2!=col4 then update set col4=col2when not matched then insert values(col1,col2)when not matched by source then delete; select* from test2结果:col3 col41 wang2 trieagle 继续:删掉test1中的一行,然后增加一行Delete test1 where col1=1Insert into test1 values(3,'wyq')然后再执行merge test2using test1 on test1.col1 =test2.col3when matched and col2!=col4 then update set col4=col2when not matched then insert values(col1,col2)when not matched by source then delete; 结果:col3 col42 trieagle3 wyqMSSQL MERGE语法的更多相关文章
- MSSQL,MySQL 语法区别
1 mysql支持enum,和set类型,sql server不支持 2 mysql不支持nchar,nvarchar,ntext类型 3 mysql的递增语句是AUTO_INCREMENT,而mss ...
- MERGE语法详解
merge语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入. 其基本语法规则是 merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a ...
- (转)MERGE语法详解
merge语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入. 其基本语法规则是 merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a ...
- oracle的merge语法
merge into trade.ttradeseat ausing trade.bs_zrt_tradeseat bon (a.L_FUND_ID = b.l_Fund_Id and a.l_bas ...
- SQL Merge 语法 单表查询
--项目中需要用到Merg语法,于是去网上查了资料,发现竟然都是多表查询,问题是我只有一张表,于是我纳闷了,后来我灵机一动,就搞定了!--表名:t_login(登录表)--字段:f_userName( ...
- ORACLE中的MERGE语法使用记录
项目中使用到了Oracle的MERGE INTO语句,在这里简单记录下使用方法 使用场景如下: 存在对一张数据量很大的表,你需要对里面的大量数据进行更新,如果数据不存在,就进行插入的操作. 常规想到的 ...
- merge 语法解析
merge into 支持sqlserver 2008 和以上的版本 无论是INSERT还是UPDATE,从执行之间上看,MERGE INTO(MERGE)都要比直接INSERT/UPDATE的效率高 ...
- MySQL与MSSQL的一些语法差异(持续更新中)
分号不能少:分号不能少:分号不能少:重要的事情说3遍 Insert或者Update的数据包含反斜杠\的时候需要进行转义\\,例:insert into tablename(id,name) value ...
- MYSQL与MSSQL对比学习
最近在将公司的一个产品里面相关的MSSQL语句修改为可以在MYSQL上执行的语句 l 优点分析: MYSQL短小精悍,容易上手,操作简单,免费供用的.相对其它数据库有特色又实用的语法多一些.SQL怎 ...
随机推荐
- software_testing_work3_question1
package com.Phantom; import java.io.IOException; import java.util.Scanner; public class Work3_1 { /* ...
- 关于AE
1.下方时间轴左边上角时间,按住ctrl点击,可切换时间与帧数 2.新建comp,ctrl+n 3.特效控制面板,F3 4.时间轴左边图层各个属性快捷键:移动,p:旋转,r:缩放,s:轴心,a:不透明 ...
- android view:布局优化
今天在图书馆看了一个android性能优化. 关于布局优化有几个小技巧: 1.尽量减少布局的嵌套,而使用相对布局,这样的话会减少布局对象的创建,并且可以再事件传递的时候减少传递嵌套. 2.使用incl ...
- linux驱动之触摸屏驱动程序
触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 :当用触摸笔按下时,产生中断.在中断处理函数处理函数中启动ADC转换x,y坐标.ADC结束,产生ADC中断,在ADC中断处理函数里上报(i ...
- 使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...
- android 5.0以下版本使用atof报错解决
经过测试,如果手机系统在5.0之下,项目project.properties的target若在5.0以上(android-20), NDK 使用atof就会报错: cannot locate symb ...
- 使用ssh key的方式建立和git服务器的通信
1.以前大家好像都在用https的方式同git来同步代码,但是到了新公司后,主管说要配ssh key,所以大概了解一下 An SSH key allows you to establish a sec ...
- gdb 调试出现 ImportError: No module named 'libstdcxx'
在emacs使用gdb调试程序,出现错误 , in <module> from libstdcxx.v6.printers import register_libstdcxx_printe ...
- Nothing about semantics
Motivation fork a project in github, seriously. Candidates PasaLab / cichlid 80% Distributed RDFS &a ...
- HTML label标签的for属性--input标签的accesskey属性
本次示例是在firefox演示(如果其他浏览器对accesskey操作不成功的,请参考文章最后各浏览器下的快捷键)label的for属性是和input的id绑定,当我们点击input前面的文本标识会自 ...