`

Merge into 使用详解(2)

 
阅读更多

自从版本9i之后,对于“有则更新,无则插入”有了一个新的用法,不需要再执行2次SQL了。

MERGE INTO本来应该是用来合并表的,不过因为其特性,根据用途不同可以用在以下场合:

1.合并表
2.外部数据插入更新
3.用JOIN表更新

各种情况下的
1.合并表
把表格T2的数据合并到表格T1里,根据结合条件,如果存在则更新,不存在则插入

Sql代码 复制代码 收藏代码
  1.     
  2. MERGE INTO T1   
  3. USING T1 ON(   
  4.   T1.user_id = T2.user_id   
  5. )   
  6. WHEN MATCHED THEN  
  7.   UPDATE SET  
  8.          T1.user_nm = T2.user_nm   
  9. WHEN NOT MATCHED THEN  
  10.   INSERT    
  11.      (user_id,user_nm)   
  12.   VALUES  
  13.      (T2.user_id,T2.user_nm)   
  14.    
 
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.外部数据插入更新
根据外部传进来的参数,如果存在的话,用给定的参数更新,如果不存在则插入

Sql代码 复制代码 收藏代码
  1. MERGE INTO T1   
  2. USER DUAL ON(   
  3.   T1.user_id = '001'  
  4. )   
  5. WHEN MATCHED THEN  
  6.   UPDATE SET  
  7.      T1.user_nm = 'David Vi'  
  8. WHEN NOT MATCHED THEN  
  9.   INSERT  
  10.      (user_id, user_nm)   
  11.   VALUES  
  12.      ('001','David Vi')  
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更新来的快。

分享到:
评论

相关推荐

    Merge into的使用详解

    本篇文章将详细介绍`MERGE INTO`的使用,包括两种常见的写法,并通过实例进行说明。 一、`MERGE INTO`的基本语法 `MERGE INTO`语句的基本结构如下: ```sql MERGE INTO target_table USING source_table ON (join...

    oracle merge into的使用

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

    Oracle merge into用法

    ### Oracle Merge Into 详解 #### 1. UPDATE 和 INSERT 的强大结合 在Oracle 9i中,`MERGE INTO`语句首次被引入,它允许在同一语句中执行`INSERT`和`UPDATE`操作。到了Oracle 10g,这个功能得到了进一步增强,使其...

    oracle merge 用法详解

    ### Oracle Merge 用法详解 #### 一、Oracle Merge 命令介绍 自Oracle 9i版本开始,Oracle数据库引入了一个非常强大的SQL语句——`MERGE`命令。通过这个命令,用户可以在一个单一的SQL语句中完成对表的插入(`...

    merge用法详解(实例详解)

    【知识点详解】 ...通过以上介绍,我们了解了`MERGE INTO`语句的基本概念和使用方法,以及在实际场景中如何进行数据同步。在数据库管理和ETL过程中,合理运用`MERGE`能有效地提高数据处理的效率和准确性。

    merge用法详解

    `MERGE INTO table_name [alias]`用于指定目标表,`USING table_or_query [alias]`则指定了源数据,这里的`table_or_query`可以是另一个表或一个SQL查询结果。`ON (condition)`定义了匹配条件,即何时将源表的记录与...

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

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

    Mysql合并表Merge引擎

    1.Merge(MRG_MyISAM)存储引擎类型允许你把许多结构相同的表合并为一个表。当从合并表中执行查询,从多个表返回的结果就像从一个表返回的结果一样。 2.要创建合并表的前提是每一个合并的表必须有同样的表定义(表结构...

    oracle Merge 函数.doc

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

    merge的用法

    ### Merge的用法详解 在数据库操作中,`MERGE`语句是一种非常强大的工具,它结合了`UPDATE`和`INSERT`的功能,允许我们根据源表中的数据更新目标表中的记录,如果源表中的记录在目标表中不存在,则可以插入新记录。...

    SQLServer中merge函数用法详解

    在本文中,我们将深入探讨`Merge`函数的使用方法和注意事项。 `Merge`语句的基本结构如下: ```sql MERGE TargetTable AS T USING SourceTable AS S ON (MatchingCondition) WHEN MATCHED AND ...

    oracle merge

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

    Oracle_merge

    ### Oracle Merge 语句详解 #### 一、引言 在数据库管理中,尤其是在处理大量数据的场景下,高效地更新或插入数据是一项至关重要的任务。Oracle 9i R2 版本引入了一种名为 `MERGE` 的新功能,这一功能在业界被称为...

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

    在提供的示例中,我们看到如何使用MERGE语句来更新或插入数据到`t_config_related`表。假设我们要根据某个序列号(seq)来更新或插入数据: ```sql MERGE INTO t_config_related A1 USING (select '97547758-6f85-...

    oracle使用 merge

    2. **使用`COUNT()`**:当源表的某些字段可能为`NULL`时,可以使用`COUNT()`函数来避免`NULL`值引发的问题。例如,在最后一个示例中,通过检查`mn`表中是否存在`ID`为4的记录,决定是否进行更新或插入操作。 3. **...

    数据湖分析之Upsert功能详解.pdf

    例如,在GDPR(通用数据保护条例)背景下,Upsert可用于实现用户数据的删除,当发现需要删除的用户时,通过MERGE INTO语句匹配并删除相应记录。另一案例是写入CDC数据,通过MERGE INTO语句根据最新的用户变更状态...

Global site tag (gtag.js) - Google Analytics