`

merge 用法示例

 
阅读更多


//测试表以及数据
//product_types:产品类型表
select * from product_types;
      PRODUCT_TYPE_ID NAME
--------------------- ----------
                    1 Book
                    2 Video
                    3 DVD
                    4 CD
                    5 Magazine
//products:产品信息表
select * from products;
      PRODUCT_ID          PRODUCT_TYPE_ID NAME            DESCRIPTION                       PRICE
---------------- ------------------------ --------------- ------------------------------- -------
               2                        1 Chemistry       Introduction to Chemistry         30.00
               3                        2 Supernova       A star explodes                   25.99
               4                        2 Tank War        Action movie about a future war   13.95
               1                        1 Modern Science  A description of modern science   19.95
//product_changes:产品信息变更表
create table product_changes(
             product_id integer primary key,
             product_type_id integer references product_types(product_type_id),
             name varchar2(50),
             price number(5,2))
//变更数据
select * from product_changes;
       PRODUCT_ID           PRODUCT_TYPE_ID NAME                                   PRICE
----------------- ------------------------- ------------------------------------ -------
                1                         1 Modern Science                         40.00
                2                         1 New Chemistry                          35.00
                3                         1 Supernova                              25.99
               13                         2 Lunar Landing                          15.99
               14                         2 Submarine                              15.99
               15                         2 Airplane                               15.99
               16                         5 Programmer                             20.00
//我想要做的是,将product_changes表中的数据跟新到products表中;
//1.更新products表中原有的数据,2.如果products表中没有的数据,就添加进去
//下面是具体实现代码:
merge into products p
using product_changes pc
on (p.product_id=pc.product_id)
when matched then
     update
     set p.product_type_id=pc.product_type_id,
         p.name=pc.name,
         p.price=pc.price
when not matched then
     insert
     (p.product_id,p.product_type_id,p.name,p.price)
     values
     (pc.product_id,pc.product_type_id,pc.name,pc.price);
//操作完成后,查看一下products表中产品信息,
//我们发现,原有的数据部分被更新了,而且新添加了一条原来没有的数据
select product_id,product_type_id,name,price
from products;
              PRODUCT_ID               PRODUCT_TYPE_ID NAME                  PRICE
------------------------ ----------------------------- ------------------- -------
                       2                             1 New Chemistry         35.00
                       3                             1 Supernova             25.99
                       4                             2 Tank War              13.95
                       1                             1 Modern Science        40.00
                      13                             2 Lunar Landing         15.99
                      15                             2 Airplane              15.99
                      14                             2 Submarine             15.99
                      16                             5 Programmer            20.00
//merge into子句常用于几个关联表更新表,和批量加载数据。

分享到:
评论

相关推荐

    oracle merge 用法详解

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

    merge用法详解(实例详解)

    本文将详细解释`MERGE`语句的用法,并通过实例进行说明。 1. **基本结构** `MERGE INTO`语句的基本结构如下: ```sql MERGE INTO 目标表 USING (源查询) 源 ON (匹配条件) WHEN MATCHED THEN UPDATE SET 列 = ...

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...

    merge的用法

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

    Oracle merge into用法

    为了更好地理解`MERGE INTO`的工作原理,让我们分析一下给定的示例代码: 首先,创建了两张表`PRODUCTS`和`NEWPRODUCTS`,分别用于存储产品信息。`PRODUCTS`表包含了已经存在的产品记录,而`NEWPRODUCTS`表包含了...

    merge用法详解

    以下是对`MERGE`语句的详细解释和示例: `MERGE INTO table_name [alias]`用于指定目标表,`USING table_or_query [alias]`则指定了源数据,这里的`table_or_query`可以是另一个表或一个SQL查询结果。`ON ...

    Hibernate中的merge使用详情解说

    在上面的示例代码中,我们可以看到如何使用 merge 方法来处理数据的更新和插入操作。首先,我们创建了一个新的 Students 对象,并设置了其 ID 和 Name 属性,然后使用 merge 方法将其保存到数据库中。在第二个 ...

    oracle merge into的使用

    最后,这个示例演示了如何使用 Merge Into 来插入记录,即使在没有匹配条件的情况下: ``` MERGE INTO products p USING new_products np ON (1 = 0) -- 这个条件永远不成立,所以不会匹配任何行 WHEN NOT ...

    Oracle MERGE INTO的用法示例介绍

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

    oracle Merge 函数.doc

    Merge 函数的用法示例 下面是一个简单的示例,演示如何使用 Merge 函数来更新或插入数据: ```sql CREATE TABLE merge_test1 (a NUMBER, b VARCHAR2(20)); CREATE TABLE merge_test2 (a NUMBER, b VARCHAR2(20));...

    Oracle中merge into的使用

    以下是一些`MERGE INTO`的使用示例: 1. **更新匹配的记录**: ```sql MERGE INTO products p USING newproducts np ON (p.product_id = np.product_id) WHEN MATCHED THEN UPDATE SET p.product_name = np....

    AIX 5L V5.3 命令参考大全,卷 3,i-m

    #### 用法示例: ```bash ibm3812|n -i <device> -o ``` - `-i`: 指定要操作的设备。 - `-o`: 指定要执行的操作选项,如查询状态(`status`)、启动设备(`start`)等。 ### ibm3816|n 此命令用于管理IBM 3816设备,...

    oracle中merge into用法及实例解析

    让我们详细了解一下`MERGE INTO`的语法和几个基本用法。 `MERGE INTO`的基本语法如下: ```sql MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...) WHEN ...

    PHP合并数组函数array_merge用法分析

    本文将详细分析PHP中的数组合并函数`array_merge`及其变体`array_merge_recursive`的用法。 ### `array_merge()` 函数 `array_merge`函数用于合并一个或多个数组,并返回一个新的数组。基本语法如下: ```php ...

    android merge和include简单使用

    在`TestMergeInclude`这个示例文件中,可能包含了用于演示`merge`和`include`用法的XML布局文件。通过查看这些文件,你可以更直观地理解这两个工具的工作原理和效果。在实际项目中,可以根据需求灵活运用这两个特性...

Global site tag (gtag.js) - Google Analytics