您的位置:首页 > 数据库 > Oracle

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”将报出一个莫名其妙的提示错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: