1. 程式人生 > >oracle merge into 用法

oracle merge into 用法

MERGE INTO 是Oracle 9i以後才出現的新的功能。那這個功能 是什麼呢?
  簡單來說,就是:“有則更新(update),無則插入(insert)”;
  從這句話裡,應該可以理解到,merge into 操作一個物件'A'的時候,要有另外一個結果集做為源資料 'B'.
  ‘merge into’  將資料來源B中的資料與A中的資料按照一定條件'C'進行對比,
  如果 A中資料滿足C條件,則進行update操作,如果不滿足條件 'C',則進行insert操作。


2、 語法結構
      
       MERGE [INTO] [schema.]table [alias]
       USING {[schema.]table|views|query} [alias]
       ON {condition}
       WHEN MATCHED THEN UPDATE SET {clause}
       WHEN NOT MATCHED THEN INSERT VALUES {clause}


merge into  a
using (select id,name from b ) c
on(a.id=c.id )
when matched then update set a.name=c.name
when not matched then insert (a.id,a.name) values (c.id,c.name);


我們可以用於單條資料的處理,也可以用於資料的批處理。對於merge into來說,那都是張飛吃豆芽兒,小菜一碟兒。
而且效率要比單獨執行update+insert 操作效率要高。但是請注意,using語句中的結果集B不可以與merge into 的物件A相同,
否則,會因為結果集A,B恆等。
當 on() 進行等值判斷時,只可以進行update操作,不能進行insert 操作
當 on() 進行不等值判斷時,只可以進行insert操作,不能進行update操作。