oraclemergeinto用法及例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oraclemergeinto用法及例子相关的知识,希望对你有一定的参考价值。

参考技术A

  ORACLE 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用法及例子的主要内容,如果未能解决你的问题,请参考以下文章

递归函数的用法及array_merge的用法

Oracle merge into的优势

Oracle merge into 基于大数据量的优化方向

pandas-16 pd.merge()的用法

Oracle SQL中的Merge用法

oracle merge into用法