自从版本9i之后,对于“有则更新,无则插入”有了一个新的用法,不需要再执行2次SQL了。
MERGE INTO本来应该是用来合并表的,不过因为其特性,根据用途不同可以用在以下场合:
1.合并表
2.外部数据插入更新
3.用JOIN表更新
各种情况下的
1.合并表
把表格T2的数据合并到表格T1里,根据结合条件,如果存在则更新,不存在则插入
MERGE INTO T1
USING T1 ON(
T1.user_id = T2.user_id
)
WHEN MATCHED THEN
UPDATE SET
T1.user_nm = T2.user_nm
WHEN NOT MATCHED THEN
INSERT
(user_id,user_nm)
VALUES
(T2.user_id,T2.user_nm)
2.外部数据插入更新
根据外部传进来的参数,如果存在的话,用给定的参数更新,如果不存在则插入
MERGE INTO T1
USER DUAL ON(
T1.user_id = '001'
)
WHEN MATCHED THEN
UPDATE SET
T1.user_nm = 'David Vi'
WHEN NOT MATCHED THEN
INSERT
(user_id, user_nm)
VALUES
('001','David Vi')
3.用JOIN表更新
这个其实和第一个应用差不多,就是USING内部是个多个表进行结合的子表,根据多个表的结合查询然后对对象表进行更新。
对于第1,3应用有个问题,就是更新对象表和USING表(子表)是1:N的关系的话,无法更新。
另外,对于第3个应用,不如用VIEW更新来的快。
分享到:
相关推荐
Mybatis批量foreach merge into的用法,这是介绍Mybatis批量foreach merge into的用法的文档
关于Oracle中merge into的用法,比较实用哦
Oracle中merge into的使用 很有用的哦 学习一下
oracle merge into的使用,开发必备的。
非常经典的SQL经验,适合于数据库初学者及长期从事软件开发者
主要介绍了oracle中merge into用法及实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
浅谈Oracle数据库中Merge Into的用法.pdf
主要类是pybigquery_merge_into.merge_clause.MergeInto() 。 例子 >> > query = MergeInto ( target = target , source = source , onclause = target . c . t1 == source . c . s1 , when_clauses = [ ...
如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 ...
可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA) 更新多个字段: INSERT INTO tbl (columnA,columnB,...
Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。通过本篇文章给大家介绍sqlserver中merge函数用法详解,感兴趣的朋友一起学习吧
使用一条语句从一个或者多个数据源中完成对表的更新和插入数据,即某一表数据变化时另一个表数据也要发生变化,我们可以通过此语句来实现,旧数据更新,新数据则新增
要求Python 3 Pillow,友好的 PIL fork ( ),与 zlib 一起安装用法 usage: merge_images.py [-h] [-c COLUMNS] [-f] [-H HEIGHT] [-W WIDTH] [-o OUTPUT] file [file ...]Merge images into a single image....
db2使用过程中基本问题的解决方案,包含了截串、时间、merge into的基本用法、存储过程、case when的基础用法
Gitlab 标签触发器 先决条件 node --version >=v4.8.7 安装 npm install -g gitlab-tag-...-m [true or false - is auto merge into master] -a [assignee_id - user assigne for merge request] 例子: gitlab
MERGE INTO 连接 分组 分页查询 常用函数的使用 统计(CASE WHEN等) 第三部分 高级SQL的编写 MERGE INTO 第三部分 高级SQL的编写 JOIN 第三部分 高级SQL的编写 JOIN 第三部分 高级SQL的编写 JOIN 第三部分 高级SQL...