`

oracle中的merge

阅读更多
本文来源于:
http://www.cnblogs.com/changhai-xuri/archive/2006/11/05/550805.html
Oracle9i引入了一个新的SQL语句,使用本语句可以在一条语句中连接两个表。
以前要使用UPDATE去更新两个表中都存在的记录,或者用INSERT添加两个合并表中不存在的记录,必须写两个SQL语句,
而现在这两种操作都只要一条SQL MERGE语句就可以实现。

create table inventory (part_nointeger integer,part_count integer); 

insert into inventory values(1,5);

insert into inventory values(3,6); 

create table shipment (part_nointeger integer,part_count integer);

insert into shipment values(1,2);
insert into shipment values(2,2);

MERGE INTO inventory
    USING shipment
    ON (inventory.part_nointeger=shipment.part_nointeger)
WHEN MATCHED THEN
   UPDATE SET inventory.part_count=inventory.part_count+shipment.part_count  --注意如果这里前面的part_count字段不指明表名,默认为shipment字段,结果会为4
WHEN NOT MATCHED THEN
   INSERT VALUES (shipment.part_nointeger,shipment.part_count);

commit;
select * from inventory;
   
truncate table inventory;     
/**//*
  PART_NO   PART_COUNT
----------              ----------
      1                      7
      3                      6
      2                      2 
 


执行的结果是shipment数据已经被合并到inventory中,所以与inventory中某些东西相匹配的shipment都会被添加到count中,
而没有得到的匹配的就不会添加到inventory中。

在MERGE语句中必须指定一个WHEN MATCHED和一个WHEN NOT MATHCED语句。
如果除这两种情况之外还有别的情况,你可能就需要使用一个常规的INSERT或者UPDATE语句。

另外一点是MERGE语句一次只能修改一行记录,而且不能修改在ON子句中引用的列。

MERGE语句的目标表(target table)(在本例中是inventory)必须是一个可以使用INSERT语句进行插入或者UPDATE语句进行更新的表或者视图。
源表(source table)(在本例中是shipment)可以是任何的查询表,比如说外部表或者管道化表函数。

分享到:
评论

相关推荐

    Oracle中merge into的使用

    在Oracle数据库中,`MERGE INTO`语句是一种强大的数据操作工具,它允许你在一个步骤中执行更新(UPDATE)和插入(INSERT)操作,从而提高了数据处理的效率和灵活性。这个命令尤其适用于需要同步两个表的数据时,比如...

    oracle中merge into用法及实例解析

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

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

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

    oracle merge 用法详解

    1. **UPDATE或INSERT子句成为可选项**:与Oracle 9i不同的是,在Oracle 10g中,`MERGE`语句允许用户只指定`UPDATE`或`INSERT`中的任意一个操作。 2. **支持WHERE子句**:在`UPDATE`和`INSERT`子句后可以添加`WHERE`...

    Oracle merge into用法

    在Oracle数据库中,`MERGE INTO`语句是一种非常强大的工具,它允许用户根据源表中的数据更新目标表,同时也可以插入新记录。这一特性在处理大量数据时尤其有用,因为它能够在一个步骤中完成更新和插入操作,从而提高...

    Oracle_merge

    本文将详细介绍 Oracle 中 `MERGE` 关键字的使用方法,并结合实际示例来解析其工作原理。 #### 二、`MERGE` 语句的基本概念 在 Oracle 9i R2 版本之前,如果需要同时进行更新和插入操作,开发人员通常需要编写两条...

    oracle merge into的使用

    描述详解:Oracle Merge Into 是一个功能强大的SQL语句,它在Oracle数据库系统中被广泛用于处理数据同步、更新或插入操作。与传统的UPDATE和INSERT语句相比,Merge Into 提供了更为灵活和高效的数据管理方式。在...

    oracle使用 merge 更新或插入数据(总结)

    oracle使用 merge 更新或插入数据(总结)

    oracle死锁原因解决办法

    在Oracle数据库系统中,死锁是一种常见的并发问题,它会导致多个事务之间互相等待对方释放资源而无法继续执行,最终导致整个系统的运行效率降低甚至停滞。死锁不仅影响数据库性能,还会影响应用程序的可用性和用户...

    oracle Merge 函数.doc

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

    oracle同一个表中使用merge.txt

    oracle同一个表中使用merge

    SQL中Merge用法详解

    MERGE语句是SQL语句的一种。在SQL Server、Oracle数据库中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据...oracle中 merge: 从oracle 9i开始支持

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

    如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,...

    oracle使用 merge

    在Oracle数据库管理中,`MERGE`语句是一种强大的功能,它允许用户根据源表中的数据更新目标表,同时也可以向目标表中插入新的记录。这使得`MERGE`成为处理大量数据时的一个高效工具,特别是在需要同步两个数据集的...

    oracle-merge

    关于数据库oracle merge RGE INTO newmergetest m using ...

    oracle merge

    merge 详解 及实例 优点:  — 避免了分开更新  — 提高性能并易于使用  — 在数据仓库应用中十分有用  — 使用merge比传统的先判断再选择插入或更新快很多

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

    Oracle的MERGE语句是一种强大的数据操作工具,它在Oracle9i版本中被引入,用于合并UPDATE和INSERT操作。在处理需要根据特定条件更新或插入数据的场景时,MERGE语句提供了高效的解决方案,尤其适合那些需要在单个SQL...

Global site tag (gtag.js) - Google Analytics