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相关推荐

  1. 【SQL】sql版Split函数。用于拆分字符串为单列表格

    [SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移 ...

  2. 【SQL】找出行数与自增标识值不相等的表(即有缺行)

    [SQL]找出行数与自增标识值不相等的表(即有缺行) 环境:mssql ent 2k8 r2 原理:遍历所有含自增列的用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,然后使用I ...

  3. max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    题目快速查找索引 阅读指南 上篇 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分]表连接(inner join/left join/right join/full jo ...

  4. 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL

    mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...

  5. 【SQL】关于SQL Server的性能优化——基础内容

    [一些网课后的笔记与后续学习的思考] 平时我们觉得查数据很慢,这个慢是什么意思? 就是在现有资源达到最大吞吐量的前提下,系统不能满足合理的数据请求的一些表现. 一.调优时,可以从以下五点考虑 ① 最小 ...

  6. 【SQL】经典50题 [ 3 ]:Q31-Q50

    [SQL]经典50题 [ 3 ]:Q31-Q50 准备:表的建立 Q31. 查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime) 1. 代码 2. 运行结果 3. ...

  7. 【SQL】之存储过程与函数

    [SQL]之存储过程与函数 存储过程 类型1:无参数无返回值 类型2:带out 类型3:带in 类型4:带in和out 类型5:带inout 存储函数 存储过程和存储函数对比 存储过程和函数的查看,修 ...

  8. 【SQL】进阶学习与题目补充

    [SQL]进阶学习与题目练习 1. 学习框架 2. leetcode日常练习 Q1 [1097. 游戏玩法分析 V](https://leetcode-cn.com/problems/game-pla ...

  9. 【SQL】interval关键字用法

    [SQL]interval关键字使用-用法 取时间间隔,用于日期计算. 例如: 下面展示一些 应用代码. ##1.取最近29天的数据 select * from table where op_time ...

最新文章

  1. 【.net部署】Server Error in ‘/‘ Application.错误解决方案
  2. 【亲测】在网页上查找接口,Network--XHR,出来的每个Name都是后台的一个接口
  3. python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班
  4. ssh中exit命令退出远程服务器_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止...
  5. python画图模块_学习python画图模块plotnine:第一步安装
  6. wpp助手怎么连接服务器,aewpp.com
  7. Linux多进程编程(2)
  8. 应对艰难职场环境的五条策略
  9. EnableViewState属性的应用
  10. html斜杠单元格,用斜杠拆分左侧单元格的html表
  11. input框输入的文本类型都是字符串类型
  12. 5960 差分约束系统
  13. 信号完整性(SI)电源完整性(PI)学习笔记(二十)传输线的串扰(四)
  14. 诚诚富众资讯1.02亿人次补偿式出游
  15. 【算法】五大常用算法最全面总结
  16. 揭秘认知智能,小i机器人的“高级知识分析师”高级在哪里?
  17. 震惊!深度揭秘互联网络!!!
  18. 对于UPX脱壳的解决
  19. 图片加载 经典的UIL框架
  20. 记录一下如何购买云服务器

热门文章

  1. 论软件开发中的可信赖的工作
  2. error: command 'gcc' failed with exit status 1
  3. 小议数据库主键选取策略(转自吕震宇老师博文)
  4. 如何运用Python建立你的第一个Slack聊天机器人?
  5. Jsp页面用table表格来让文字和文本框对齐
  6. JFinal 表自动绑定插件实现,实现零配置,支持多数据源
  7. 数据结构实践项目——图的基本运算及遍历操作
  8. Java垃圾回收精粹 — Part4
  9. asterisk 拨号方案---之查询
  10. 转帖:李开复的“创新工厂”为何失败?原作者QuarterThousand