Oracle 中Merge into 的用法
2015-11-22 19:58
1051 查看
核心用途:
使用一语句从一个或者多个数据源中完成对表的更新和插入操作。
用法规则:
1、insert 和update是可选的
2、update和insert后面可以跟where子句
3、在on条件中可以使用常量来insert所有的行到目标表中,不需要连接到源表和目标表
4、update子句后面可以跟delete去除一些不需要的行
语法:
MERGE INTO SCHEMA .TABLE T_ALIAS
USING SCHEMA . {TABLE | VIEW |SUBQUERY } T_ALIAS
ON (CONDITION)
WHEN MATCHED THEN
MERGE_UPDATE_CLAUSE
WHEN NOT MATCHED THEN
MERGE_INSERT_CLAUSE / MERGE_DELETE_CLAUSE;
举例说明:
1、匹配更新
2、不匹配插入
3、匹配不带where更新
4、匹配带where更新、插入
5、on常量表达式
6、匹配删除、不匹配插入
7、源表为子查询(自连接)
优点:
—避免了分开更新
—提高性能并易于使用
—在数据仓库应用中十分有用
—使用merge比传统的先判断再选择插入或更新快很多
需要注意的地方:
1、从语法条件上看(ON (join condition)),merge into也是一个危险的语法。如果不慎重使用,会将源表全部覆盖到目标表,既危险又浪费效率,违背了增量同步的原则。所以在设计表结构时,一般每条记录都有“更新时间”的字段,用目标表“最大更新时间”判断源表数据是否有更新和新增的信息。
2、更新的字段,不允许有关联条件的字段(join condition)。比如条件是 A.ID=B.ID,那么使用“SET A.ID=B.ID”将报出一个莫名其妙的提示错误。
使用一语句从一个或者多个数据源中完成对表的更新和插入操作。
用法规则:
1、insert 和update是可选的
2、update和insert后面可以跟where子句
3、在on条件中可以使用常量来insert所有的行到目标表中,不需要连接到源表和目标表
4、update子句后面可以跟delete去除一些不需要的行
语法:
MERGE INTO SCHEMA .TABLE T_ALIAS
USING SCHEMA . {TABLE | VIEW |SUBQUERY } T_ALIAS
ON (CONDITION)
WHEN MATCHED THEN
MERGE_UPDATE_CLAUSE
WHEN NOT MATCHED THEN
MERGE_INSERT_CLAUSE / MERGE_DELETE_CLAUSE;
举例说明:
1、匹配更新
2、不匹配插入
3、匹配不带where更新
4、匹配带where更新、插入
5、on常量表达式
6、匹配删除、不匹配插入
7、源表为子查询(自连接)
优点:
—避免了分开更新
—提高性能并易于使用
—在数据仓库应用中十分有用
—使用merge比传统的先判断再选择插入或更新快很多
需要注意的地方:
1、从语法条件上看(ON (join condition)),merge into也是一个危险的语法。如果不慎重使用,会将源表全部覆盖到目标表,既危险又浪费效率,违背了增量同步的原则。所以在设计表结构时,一般每条记录都有“更新时间”的字段,用目标表“最大更新时间”判断源表数据是否有更新和新增的信息。
2、更新的字段,不允许有关联条件的字段(join condition)。比如条件是 A.ID=B.ID,那么使用“SET A.ID=B.ID”将报出一个莫名其妙的提示错误。
相关文章推荐
- 将VF的dbf文件导入到oracle数据库的方法
- Oracle函数列表速查
- 利用TOAD实现EXCEL数据在oracle的导入导出
- Oracle 常用SQL技巧收藏
- Oracle事务处理
- Oracle 表操作(三)
- Oracle12c学习(一)---Redhat Enterprise Linux7安装Oracle12c(Oracle11g)
- Oracle函数
- Oracle安装后,服务中没有监听器怎么处理?
- Oracle 序列(二)
- Oracle 表及表空间(一)
- 无法解析指定的连接标识符 oracle错误12154
- Java操作Oracle
- oracle函数大全
- “ORA-01110: data file 1: 'F:\oracle\product\10.2.0\oradata\orcl\sysaux01.dbf'"解决方法
- C#使用ODAC向Oracle数据库插入海量实时数据
- Oracle协议适配器错误解决办法
- 深入理解Oracle 的并行执行
- Oracle并行详解
- 95.Oracle数据库SQL开发之 修改表内存——查询闪回