• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    Oracle merge into用法及例子

    發布時間:  2012/8/13 16:15:26

     Oracle 9I中加入了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 varchar2(20),age number);

      向表中插入數據:

      insert into tj_test values (1,'jan',23);

      insert into tj_test values (2,'kk',22);

      insert into tj_test values (3,'joe',27);

      select * from tj_test;

      查詢結果如下:

      1 jan 23

      2 kk 22

      3 joe 27

      創建另一新表

      create table tj_test1 as select * from tj_test where 1=0

      插入一條數據

      insert into tj_test1 values (1,'jlk',23);

      select * from tj_test1

      查詢結果如下:

      1 jkl 23 --注意,這里的的NAME字段中的值是jkl

      使用MERGE,實現有則更新,無則插入,sql語句如下:

      merge into tj_test1 tt1

      using tj_test tt

      on (tt1.id=tt.id)

      when matched then

      update set

      tt1.name=tt.name,

      tt1.age=tt.age

      when not matched then

      insert values(

      tt.id,

      tt.name,

      tt.age)

      查詢tj_test1表(對比原來表中的數據,更新了ID=1 ROW中字段NAME,同時多出兩條新數據)

      select * from tj_test1

      改變行數據如下:

      1 jan 23 --這里的原有jkl值被更新

      3 joe 27 --原來表中沒有的插入

      2 kk 22 --原來表中沒有的插入

      如果存在就更新,不存在就插入

      9i已經支持了,是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 (c.course_name = cu.course_name

      AND c.period = cu.period)

      WHEN MATCHED THEN

      UPDATE

      SET c.course_hours = cu.course_hours

      WHEN NOT MATCHED THEN

      INSERT (c.course_name, c.period,

      c.course_hours)

      VALUES (cu.course_name, cu.period,

      cu.course_hours);


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      1
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線