【SQL】MERGE
MERGE可以合并多个表中的数据,也可实现多表中数据的同步。使用MERGE语句对表中数据进行有条件的更新和插入。当查找的行存在时,UPDATE更新行中的数据;当查找的行不存在时,INSERT插入数据。
语法如下:
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1=col_val1,
col2=col_val2
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);
语法解析:
MERGE INTO后跟要更新或者插入数据的目标表;
USING后跟源表;
ON后跟连接条件;
例如:同步dept表中数据到dept_1中
SQL> merge into dept_1 d1
2 using dept d
3 on (d.deptno=d1.deptno)
4 when matched then
5 update set d1.dname = d.dname, d1.loc = d.loc
6 when not matched then
7 insert values (d.deptno, d.dname, d.loc);
4 rows merged.
注意:ON后面作为连接条件的列不必再从SET后出现,即不能更新作为条件的列。否则会报如下错误:
SQL> merge into dept_1 d1
2 using dept d
3 on (d.deptno=d1.deptno)
4 when matched then
5 update set d1.deptno = d.deptno, d1.dname = d.dname, d1.loc = d.loc
6 when not matched then
7 insert values (d.deptno, d.dname, d.loc);
on (d.deptno=d1.deptno)
*
ERROR at line 3:
ORA-38104: Columns referenced in the ON Clause cannot be updated: "D1"."DEPTNO"
【SQL】MERGE相关推荐
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
[SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移 ...
- 【SQL】找出行数与自增标识值不相等的表(即有缺行)
[SQL]找出行数与自增标识值不相等的表(即有缺行) 环境:mssql ent 2k8 r2 原理:遍历所有含自增列的用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,然后使用I ...
- max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...
题目快速查找索引 阅读指南 上篇 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分]表连接(inner join/left join/right join/full jo ...
- 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL
mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...
- 【SQL】关于SQL Server的性能优化——基础内容
[一些网课后的笔记与后续学习的思考] 平时我们觉得查数据很慢,这个慢是什么意思? 就是在现有资源达到最大吞吐量的前提下,系统不能满足合理的数据请求的一些表现. 一.调优时,可以从以下五点考虑 ① 最小 ...
- 【SQL】经典50题 [ 3 ]:Q31-Q50
[SQL]经典50题 [ 3 ]:Q31-Q50 准备:表的建立 Q31. 查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime) 1. 代码 2. 运行结果 3. ...
- 【SQL】之存储过程与函数
[SQL]之存储过程与函数 存储过程 类型1:无参数无返回值 类型2:带out 类型3:带in 类型4:带in和out 类型5:带inout 存储函数 存储过程和存储函数对比 存储过程和函数的查看,修 ...
- 【SQL】进阶学习与题目补充
[SQL]进阶学习与题目练习 1. 学习框架 2. leetcode日常练习 Q1 [1097. 游戏玩法分析 V](https://leetcode-cn.com/problems/game-pla ...
- 【SQL】interval关键字用法
[SQL]interval关键字使用-用法 取时间间隔,用于日期计算. 例如: 下面展示一些 应用代码. ##1.取最近29天的数据 select * from table where op_time ...
最新文章
- 【.net部署】Server Error in ‘/‘ Application.错误解决方案
- 【亲测】在网页上查找接口,Network--XHR,出来的每个Name都是后台的一个接口
- python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班
- ssh中exit命令退出远程服务器_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止...
- python画图模块_学习python画图模块plotnine:第一步安装
- wpp助手怎么连接服务器,aewpp.com
- Linux多进程编程(2)
- 应对艰难职场环境的五条策略
- EnableViewState属性的应用
- html斜杠单元格,用斜杠拆分左侧单元格的html表
- input框输入的文本类型都是字符串类型
- 5960 差分约束系统
- 信号完整性(SI)电源完整性(PI)学习笔记(二十)传输线的串扰(四)
- 诚诚富众资讯1.02亿人次补偿式出游
- 【算法】五大常用算法最全面总结
- 揭秘认知智能,小i机器人的“高级知识分析师”高级在哪里?
- 震惊!深度揭秘互联网络!!!
- 对于UPX脱壳的解决
- 图片加载 经典的UIL框架
- 记录一下如何购买云服务器
热门文章
- 论软件开发中的可信赖的工作
- error: command 'gcc' failed with exit status 1
- 小议数据库主键选取策略(转自吕震宇老师博文)
- 如何运用Python建立你的第一个Slack聊天机器人?
- Jsp页面用table表格来让文字和文本框对齐
- JFinal 表自动绑定插件实现,实现零配置,支持多数据源
- 数据结构实践项目——图的基本运算及遍历操作
- Java垃圾回收精粹 — Part4
- asterisk 拨号方案---之查询
- 转帖:李开复的“创新工厂”为何失败?原作者QuarterThousand