SQL语句merge into的用法
应用场景
在批量更新大量的数据时,使用Insert 和Update操作会出现效率低下,甚至卡死的情况。改用 MERGE INTO 代替执行批量更新,会提升执行效率。
merge into将源数据(来源于实际的表,视图,子查询)更新或插入到指定的表中(必须实际存在),好处是避免了多个insert 和update操作。
merge into是一个目标性明确的操作符,不允许在一个merge 语句中对相同的行insert或update操作。
这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于insert+update,尤其是在大数据量面前,效率越明显。
语法
语法如下:
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col1_val1,col2 = col2_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
其中,table_name 指的是更新的表,using()里边的指的是数据来源表/视图/子查询结果集,condition指的是连接条件。
如果满足连接条件,则更新字段;如果连接条件不满足,则停止更新进行插入。
举例
table_a : 计划金额表
table_b : 调整表
table_c : 调整金额表
想要根据调整id,将调整金额累加到计划金额表中。一次更新当年12个月。
MERGE INTO table_a t1 USING (SELECTm.plan_id,m.adjust_money + d.adjust_money adjust_money,m.all_money + d.adjust_money all_moneyFROMtable_a mLEFT JOIN table_b a ON m.card_id = a.card_idLEFT JOIN table_c d ON a.adjust_id = d.adjust_idWHEREa.adjust_id = 5AND a.comp_code = '100101'AND m.year = d.year
) t2 ON (t1.plan_id = t2.plan_id)
WHEN matched THENUPDATE
SET t1.adjust_money = t2.adjust_money,t1.all_money = t2.all_money
SQL语句merge into的用法相关推荐
- IsNull 和 SQL语句中CASE WHEN用法
[转]IsNull 和 SQL语句中CASE WHEN用法收藏 [转]IsNull 和 SQL语句中CASE WHEN用法 1.ISNULL 使用指定的替换值替换 NULL. ...
- sql语句中的in用法示例_PHP中的循环语句和示例
sql语句中的in用法示例 循环 (Loops) Imagine that we need a program that says "hello world" 100 times. ...
- sql语句中的in用法示例_示例中JavaScript in操作符
sql语句中的in用法示例 One of the first topics you'll come across when learning JavaScript (or any other prog ...
- mysql语句中limt_mysql sql语句中的limit用法
mysql sql语句中的limit用法 1.select * from tablename limit 100,15 从100条记录后开始(不包括第100条记录)取出15条记录 (实际取出的是第 1 ...
- sql语句中的limit用法
sql语句中的limit用法 limit 用于限制查询结果返回. 用法: limit a,b 其中a表示查询数据的起始位置,b表示返回的数量. (MySQL数据库中的记录是从0开始的) 举例: SEL ...
- SQL语句中JOIN的用法
记录:257 写SQL最高境界:SELECT * FROM 表名.当然这是一句自嘲.探究一下SQL语句中JOIN的用法,直到经历这个场景,变得想验证一下究竟. 一.场景 把关系型数据库A中表TEST_ ...
- SQL语句中EXISTS的用法
记录:258 在业务开展中,会遇到类似需求. 需求1:UPDATE表TEST_TB01中的记录:满足条件:这些记录不在TEST_TB02中. 需求2:UPDATE表TEST_TB01中的记录:满足条件 ...
- sql 语句NVL()用法
sql 语句NVL()用法 一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(null)转 ...
- SQL语句中Cast的用法
GPS平台.网站建设.软件开发.系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/inde ...
最新文章
- Handler造成Activity泄漏,用弱引用真的有用么?
- 九度oj 1006 ZOJ问题 2010年浙江大学计算机及软件工程研究生机试真题
- 著名软件公司的java笔试算法题!(含参考答案)
- c语言程序设计现代方法第二版 第10章程序设计题3题,自己编写的一个程序
- 计算机应用基础专科,2019年自考《计算机应用基础》专科模拟试题及答案
- BenchmarkDotNet v0.12x新增功能
- android volley设置编码,Volley 概览 | Android 开发者 | Android Developers
- html科学计算器,html+css+js实现科学计算器
- python房屋租赁系统的设计与实现_基于ssh的房屋租赁系统的设计与实现(含源文件)...
- vscode 软件 git提交代码步骤(结合webstorm软件)
- 电子商务概论(农)之形考作业三
- Excel应用技巧之二——常用函数
- 计算机领域论文 网站,各类论文网站大全
- mysql中表结构是什么_查询MySQL数据库中表结构
- 移动硬盘突然断电导致坏道产生
- win7空文件夹删不掉的原因及解决方法
- CRM SaaS是什么?
- 5月Github上最热门的数据科学和机器学习项目TOP5
- arcgis取消投影_ArcGIS中的投影问题
- Android设置应用数字角标