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怎 ...
随机推荐
- oracle xmltype导入并解析Excel数据--前言
通常,很多的时候,我们需要导入Excel数据到系统中,但是Excel数据需要我们去各种校验,比如身份证校验,手机号码校验等等. 校验失败的数据,提供Excel导出错误原因,提示给用户. 如此,如果校验 ...
- See you~_树状数组
Problem Description Now I am leaving hust acm. In the past two and half years, I learned so many kno ...
- G - 非常可乐
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pract ...
- Linux使用mount挂载samba共享
# 挂载smb使用读写777权限sudo mount -t cifs -o "rw,dir_mode=0777,file_mode=0777,username=winuser,passwor ...
- svn客户端命令
记几个常用的命令. 首次拉仓库时,先要进行检出(url可以带端口号): svn checkout http://svn.example.com:9834/repos svn checkout file ...
- 手动搭建Vue环境
Vue+webpack+babel环境搭建 github地址 https://github.com/haoyongliang/webpack-babel-Vue 1.首先要了解Vue项目结构 简单的目 ...
- php判断json对象是否存在的方法
在实际测试中php读取json数组时 使用简单的 if 或者 array_key_exists 去判断对象是否存在是会报错的,以下是google搜寻的正确判断方法 实际上出现报错只是我对php还不是很 ...
- 带head的gridview
这是github上的一个项目,根据谷歌的那个HeadGridView改的,因为谷歌的那个addHeadView后宽度不能填充屏幕,下面是代码. 来源:https://github.com/liaohu ...
- Nginx Debug Log
//检查nginx.conf时(sudo ./nginx -t),输出数据到检测结果 //ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "配置解析处理&q ...
- input常用属性
对于input的使用,大家都很熟悉的,<input> 标签用于搜集用户信息.根据不同的 type 属性值,输入字段拥有很多种形式.输入字段可以是文本字段.复选框.掩码后的文本控件.单选按钮 ...