oraclemergeinto用法及例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oraclemergeinto用法及例子相关的知识,希望对你有一定的参考价值。
参考技术AORACLE I中加入了MERGE
语法
MERGE [hint] INTO [schema ] table [t_alias]
USING [schema ] table | view | subquery [t_alias]
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
创建测试数据表
create table tj_test(id number name varchar ( ) age number);
向表中插入数据
insert into tj_test values ( jan );
insert into tj_test values ( kk );
insert into tj_test values ( joe );
select * from tj_test;
查询结果如下
jan
kk
joe
创建另一新表
create table tj_test as select * from tj_test where =
插入一条数据
insert into tj_test values ( jlk );
select * from tj_test
查询结果如下
jkl 注意 这里的的NAME字段中的值是jkl
使用MERGE 实现有则更新 无则插入 sql语句如下
merge into tj_test tt
using tj_test tt
on (tt id=tt id)
when matched then
update set
tt name=tt name
tt age=tt age
when not matched then
insert values(
tt id
tt name
tt age)
查询tj_test 表(对比原来表中的数据 更新了ID= ROW中字段NAME 同时多出两条新数据)
select * from tj_test
改变行数据如下
jan 这里的原有jkl值被更新
joe 原来表中没有的插入
kk 原来表中没有的插入
如果存在就更新 不存在就插入
i已经支持了 是Merge 但是只支持select子查询
如果是单条数据记录 可以写作select …… from dual的子查询
语法为
MERGE INTO table
USING data_source
ON (condition)
WHEN MATCHED THEN update_clause
WHEN NOT MATCHED THEN insert_clause;
如:
MERGE INTO course c
USING (SELECT course_name period
course_hours
FROM course_updates) cu
ON (urse_name = urse_name
AND c period = cu period)
WHEN MATCHED THEN
UPDATE
SET urse_hours = urse_hours
WHEN NOT MATCHED THEN
INSERT (urse_name c period
urse_hours)
VALUES (urse_name cu period
lishixinzhi/Article/program/Oracle/201311/18285
以上是关于oraclemergeinto用法及例子的主要内容,如果未能解决你的问题,请参考以下文章