Oracle 的 merge 更新和插入操作
使用merge比傳統的先判斷再選擇插入或更新快很多。
1)主要功能
提供有條件地更新和插入資料到資料庫表中
如果該行存在,執行一個UPDATE操作,如果是一個新行,執行INSERT操作
— 避免了分開更新
— 提高效能並易於使用
— 在資料倉儲應用中十分有用
2)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;
3)使用merge的注意事項:on子句的使用的欄位不能夠用於update,即Oracle不允許更新用於連線的列。
1)主要功能
提供有條件地更新和插入資料到資料庫表中
如果該行存在,執行一個UPDATE操作,如果是一個新行,執行INSERT操作
— 避免了分開更新
— 提高效能並易於使用
— 在資料倉儲應用中十分有用
2)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;
3)使用merge的注意事項:on子句的使用的欄位不能夠用於update,即Oracle不允許更新用於連線的列。
4)例項如下:
首先,我們建立一個測試表(create table t_userobject as select object_id,object_name from user_objects where rownum<=100),然後透過merge的方式來維護該表的資料。根據object_id來匹配,能匹配上的,若object_name 不同(本例中不可能有該情況),則更新object_name;不能匹配上的,則直接新增該記錄。從而達到批次INSERT和UPDATE操作。
merge into t_userobject t
using (select object_id, object_name from user_objects) s
on (t.object_id = s.object_id)
when matched then
update
set t.object_name = s.object_name
where t.object_name != s.object_name
when not matched then
INSERT (object_id, object_name) VALUES (s.object_id, s.object_name);
using (select object_id, object_name from user_objects) s
on (t.object_id = s.object_id)
when matched then
update
set t.object_name = s.object_name
where t.object_name != s.object_name
when not matched then
INSERT (object_id, object_name) VALUES (s.object_id, s.object_name);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-683827/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 MERGE 插入、更新和刪除資料
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- ORACLE Temporary Tables臨時表更適合做插入和查詢操作Oracle
- 【原】關於Oracle Merge操作的簡單用法Oracle
- 第15 16課 資料的插入更新和刪除
- mysql類似merge的操作MySql
- MSSQL Merge [Into](一鍵式更新、插入、刪除)SQL
- Sqlserver、oracle中Merge的使用方法,一個merge語句搞定多個Insert,Update,Delete操作SQLServerOracledelete
- oracle merge into用法Oracle
- oracle_mergeOracle
- Java後端--29--Mybatis的更新和刪除操作Java後端MyBatis
- 【變更】線上庫的變更操作
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- Oracle表連線操作——Merge Sort Join(合併排序連線)Oracle排序
- 插入查詢資料的操作
- oracle hint no_mergeOracle
- Oracle Merge語法Oracle
- MongoDB(7)- 文件插入操作MongoDB
- MongoDB 集合的插入、更新、刪除操作MongoDB
- oracle多表插入Oracle
- Java 8 中 Map 騷操作之 merge() 的用法Java
- Oracle merge into delete語法Oracledelete
- oracle中merge into用法解析Oracle
- oracle merge into 用法詳解Oracle
- Oracle Performance Storyteller MERGEOracleORM
- ORACLE merge用法詳解Oracle
- Oracle EBS AD Merge PatchOracle
- github fork別人專案之後,更新和提交操作Github
- Oracle的多表插入語句Oracle
- [LintCode] Merge Two Sorted Lists 混合插入有序連結串列
- [LeetCode] Merge Two Sorted Lists 混合插入有序連結串列LeetCode
- Merge into: Oracle中用一條SQL語句直接進行Insert/Update的操作(R1)OracleSQL
- oracle merge into用法(R1)Oracle
- oracle中merge 語句使用Oracle
- oracle-merge用法詳解Oracle
- Oracle插入Blob資料的方法Oracle
- oracle 10g merge命令的增強Oracle 10g
- Oracle 級聯表更新和SQLServer 級聯表更新OracleSQLServer