程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle9i中MERGE的用法

Oracle9i中MERGE的用法

編輯:關於Oracle數據庫

      語法:

      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;

      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,實現有則更新,無則插入

      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 --原來表中沒有的插入

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved