度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 922|回复: 4
打印 上一主题 下一主题

[分享] MERGE 语句

[复制链接]

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
跳转到指定楼层
楼主
发表于 2020-3-1 18:52:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、MERGE 语句的语法
       MERGE语句,可以称其为“融合”语句,它相当于插入与更新语句的综合。通常是对两个表进行操作,是执行对目的表的更新操作还是执行对目的表的插入操作,取决于基于ON子句中的条件。MERGE有以下特点:避免分散更新,增进性能和易用性,在数据仓库应用中有用。MERGE合并的语法如下
[url=][/url]
MERGE INTO table_nametable_alias       ---指定你正在更新或插入的目的表USING (table|view|sub_query) alias     ---指定要用于更新或插入的数据源ON (join condition)              ---类似于表连接条件,在此条件下即可更新也可进行插入WHEN MATCHED THEN                ---当满足条件时,更新该条记录到目的表中UPDATE
SET col1 = col1_val[,col2 = col2_val...]WHEN NOT MATCHED THEN            ---当不满足条件时,插入该条记录到目的表中INSERT (column_list)VALUES (column_values);
[url=][/url]

       在数据仓库环境中,你可能有一个大的事实表和一个较小维数的表,小表中的行需要有条件地插入到大的事实表中,比如处理来自多个源的数据工作时,其中的一些可能是完全相同的,需要有条件地添加或修改行。在这种情况下,MERGE语句是有用的。
       2、MERGE 语句的例子
       现在,要把员工表EMP_COPY的数据合并到员工表EMP中,通过匹配EMP_COPY表的EMPNO列和EMP表的EMPNO列。如果找到了一个匹配,用EMP_COPY表中匹配行的列值更新EMP表中匹配的列值。如果相匹配行没有找到,EMP_COPY表中匹配行的列值被插入到COPY_EMP表中。

----构造一个用于合并的员工表emp_copyCREATE TABLE emp_copy AS SELECT * FROM emp WHERE deptno in (10,40);INSERT INTO emp_copy (empno,ename,job,mgr,hiredate,sal,comm,deptno)VALUES (7899,'ASD','CLERK',7839,To_Date('2017-1-23','yyyy-mm-dd'),2000,0,10);UPDATE emp_copy SET sal=1900 WHERE empno=7934;----把员工表EMP_COPY的数据合并到员工表EMP中MERGE INTO emp eUSING emp_copy cON (e.empno=c.empno)WHEN MATCHED THENUPDATESET e.ename=c.ename, --由于ON条件中已有e.empno=c.empno,故此处不能出现该句。    e.job=c.job,    e.mgr=c.mgr,    e.hiredate=c.hiredate,    e.sal=c.sal,    e.comm=c.comm,    e.deptno=c.deptnoWHEN NOT MATCHED THENINSERTVALUES(c.empno,c.ename,c.job,c.mgr,c.hiredate,c.sal,c.comm,c.deptno);
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-3-5 18:03:17 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
板凳
 楼主| 发表于 2020-3-5 18:38:51 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-3-6 19:11:39 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
5#
 楼主| 发表于 2020-3-7 18:37:35 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-9-27 22:18 , Processed in 0.171571 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表