//测试表以及数据
//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 9i版本开始,Oracle数据库引入了一个非常强大的SQL语句——`MERGE`命令。通过这个命令,用户可以在一个单一的SQL语句中完成对表的插入(`...
本文将详细解释`MERGE`语句的用法,并通过实例进行说明。 1. **基本结构** `MERGE INTO`语句的基本结构如下: ```sql MERGE INTO 目标表 USING (源查询) 源 ON (匹配条件) WHEN MATCHED THEN UPDATE SET 列 = ...
Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...
### Merge的用法详解 在数据库操作中,`MERGE`语句是一种非常强大的工具,它结合了`UPDATE`和`INSERT`的功能,允许我们根据源表中的数据更新目标表中的记录,如果源表中的记录在目标表中不存在,则可以插入新记录。...
为了更好地理解`MERGE INTO`的工作原理,让我们分析一下给定的示例代码: 首先,创建了两张表`PRODUCTS`和`NEWPRODUCTS`,分别用于存储产品信息。`PRODUCTS`表包含了已经存在的产品记录,而`NEWPRODUCTS`表包含了...
以下是对`MERGE`语句的详细解释和示例: `MERGE INTO table_name [alias]`用于指定目标表,`USING table_or_query [alias]`则指定了源数据,这里的`table_or_query`可以是另一个表或一个SQL查询结果。`ON ...
在上面的示例代码中,我们可以看到如何使用 merge 方法来处理数据的更新和插入操作。首先,我们创建了一个新的 Students 对象,并设置了其 ID 和 Name 属性,然后使用 merge 方法将其保存到数据库中。在第二个 ...
最后,这个示例演示了如何使用 Merge Into 来插入记录,即使在没有匹配条件的情况下: ``` MERGE INTO products p USING new_products np ON (1 = 0) -- 这个条件永远不成立,所以不会匹配任何行 WHEN NOT ...
如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 ...
Merge 函数的用法示例 下面是一个简单的示例,演示如何使用 Merge 函数来更新或插入数据: ```sql CREATE TABLE merge_test1 (a NUMBER, b VARCHAR2(20)); CREATE TABLE merge_test2 (a NUMBER, b VARCHAR2(20));...
以下是一些`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....
#### 用法示例: ```bash ibm3812|n -i <device> -o ``` - `-i`: 指定要操作的设备。 - `-o`: 指定要执行的操作选项,如查询状态(`status`)、启动设备(`start`)等。 ### ibm3816|n 此命令用于管理IBM 3816设备,...
让我们详细了解一下`MERGE INTO`的语法和几个基本用法。 `MERGE INTO`的基本语法如下: ```sql MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...) WHEN ...
本文将详细分析PHP中的数组合并函数`array_merge`及其变体`array_merge_recursive`的用法。 ### `array_merge()` 函数 `array_merge`函数用于合并一个或多个数组,并返回一个新的数组。基本语法如下: ```php ...
在`TestMergeInclude`这个示例文件中,可能包含了用于演示`merge`和`include`用法的XML布局文件。通过查看这些文件,你可以更直观地理解这两个工具的工作原理和效果。在实际项目中,可以根据需求灵活运用这两个特性...