`
dacoolbaby
  • 浏览: 1259051 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle Merge into语句

阅读更多

研究这个语句完全是为了偷懒而使用的。

因为在Java写后台程序的时候,经常会出现存在则UPDATE,不存在则INSERT的需求。

用SQL来完成就是要做3条SQL,用Hibernate写就就方便咯。

可是我用的是iBatis,就要写三条了。。

 

简单地说一下这个SQL吧。

 

MERGE INTO target_tbl a   
USING new_record b   
ON (a.product_id = b.product_id)   
WHEN MATCHED THEN  
UPDATE  SET a.product_name = b.product_name,   
                   a.category = b.category
WHEN NOT MATCHED THEN 
INSERT VALUES (b.product_id, b.product_name, b.category)   
WHERE b.category != 'BOOKS' 
;

 

merge into 关键字后面接着的是目标表,就是最终会改变数据的表。

using后面接的是结果集,可以是一个表,也可以是一条SQL查询语句。

ON 很显然是连接条件。

 

在后面的matched 和 NOT matched 的情况下,都和原有的INSERT UPDATE语句差不多,就是省去了写表名的动作。

 

又查了一下,merge into还可以附加delete操作呢。

可谓是非常强大,我的使用其实很简单:

MERGE INTO T T1
USING (
SELECT '1001' AS a,2 AS b FROM dual) T2
ON ( T1.a=T2.a)
WHEN MATCHED THEN
  
UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN 
  
INSERT (a,b) VALUES(T2.a,T2.b);

 

备注,如果在存储过程里面使用了merge语句后,记得一定要COMMIT!!

是的,merge into语句是需要COMMIT的!

 

分享到:
评论

相关推荐

    浅谈Oracle数据库中Merge Into的用法.pdf

    在 Oracle 数据库中,Merge Into 语句是一种非常有用的功能,它主要用来合并 update 和 insert 语句,即用一个表中的数据来修 改或插入到另一个表中。Merge Into 语句的主要原则是“有则更新,无则插入”。 Merge ...

    Mybatis批量foreach merge into的用法

    首先,需要使用Oracle 9i及其以后版本支持的merge into语句,该语句可以实现insertOrUpdate的功能。然后,使用Mybatis的动态SQL语法foreach循环插入,待插入的实体bean的List通过查询数据库dual形成表。foreach的 ...

    oracle Merge 函数.doc

    Oracle Merge 函数是一种强大的数据操作语句,用于从一个表中选择一些数据更新或者插入到另一个表中。Merge 函数的使用方式有三种:只更新不插入、只插入不更新和既插入也更新。 Merge 函数的基本用法 Merge ...

    Oracle MERGE INTO的用法示例介绍

    如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 ...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    可以使用以下语句: 更新一个字段: 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,...

    使用BULK COLLECT, MERGE 语句提高sql执行效率

    详细介绍了使用 BULK COLLECT 进行批量操作 提高sql的执行效率 使用MERGE INTO USING 一条sql搞定 新增和修改 使用connect by 进行递归树查询

    Oracle merge合并更新函数实例详解

    MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次...

    oracle中merge into用法及实例解析

    Oracle中的`MERGE INTO`语句是一种强大的工具,用于整合数据操作,如更新、插入和删除,基于两个数据源的匹配条件。这个语句在处理数据仓库、数据同步或者复杂业务逻辑时非常有用。让我们详细了解一下`MERGE INTO`的...

    oracle数据匹配merge into的实例详解

    Oracle的`MERGE INTO`语句是一种强大的工具,用于根据源数据更新或插入目标表的记录。这个SQL命令结合了`INSERT`, `UPDATE`和`DELETE`操作,使得在处理数据匹配和同步时更加高效。在给定的实例中,`MERGE INTO`被...

    利用 sqluldr2导出数据 使用sqlldr导入数据 通过merge into 合并更新数据

    下面将详细阐述如何使用这两个工具以及如何通过`MERGE INTO`语句进行数据合并更新。 1. SQLULDR2导出数据: SQLULDR2是Oracle提供的一款数据导出工具,它能够快速地将数据库中的数据导出到文本文件或其他格式的...

    Oracle 大数据量操作性能优化

    alter table add partition 语句,删除分区可以使用 alter table drop partition 语句,Truncate 分区可以使用 alter table truncate partition 语句,合并分区可以使用 alter table merge partitions 语句。...

    oracle的update的五种方式

    Merge 更新法是 Oracle 特有的语句,语法为:`MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPDATE table_name SET ... WHEN NOT MATCHED THEN INSERT...

    ORACLE 常用sql专题讲解

    本专题将深入探讨几个在Oracle中常用的SQL特性,包括行列转化、MERGE INTO语句、CASE表达式、ROWNUM伪列以及分析函数。这些知识点不仅在日常开发中频繁使用,也是面试中常被问及的技能点。 首先,我们来看行列转化...

    Merge-Sql.zip

    在支持MERGE的数据库系统(如Oracle、SQL Server、PostgreSQL等)中,这个语句能有效地处理复杂的合并场景。然而,并非所有数据库都原生支持MERGE,例如MySQL的标准版本就未包含此功能。在这种情况下,我们需要寻找...

    oracle资源大全

    8. **merge into 用法.txt**:MERGE INTO是Oracle中的一个高级DML操作,用于合并数据源,实现更新或插入,根据特定条件决定是更新已有记录还是插入新记录。 通过学习这些资料,不仅可以掌握Oracle的基础操作,还能...

    ORACLE语句学习档(好)for+新人

    其中,Select语句用于查询数据,DML包括Insert、Update、Delete和Merge,用于插入、更新、删除数据和合并操作,DDL涉及创建、修改、删除数据库对象,DCL则用于权限的授予和撤销,事务控制语句如Commit、Rollback和...

    达梦数据库sql语言使用手册

    达梦数据库sql语言手册,达梦数据库是国产数据库里最好使用的,可以跟oracle数据无缝替换的

    ORACLE学习文档

    * 数据操作语句(DML):包括 INSERT、UPDATE、DELETE、MERGE 等语句,用于操作数据 * 数据定义语句(DDL):包括 CREATE、ALTER、DROP、TRUNCATE 等语句,用于定义数据结构 * 数据控制语言(DCL):包括 GRANT、...

Global site tag (gtag.js) - Google Analytics