Oracle 中Merge into 的用法

2021-07-07 09:10:24 字數 1023 閱讀 5541

核心用途:

使用一語句從乙個或者多個資料來源中完成對錶的更新和插入操作。

用法規則:

1、insert 和update是可選的

2、update和insert後面可以跟where子句

3、在on條件中可以使用常量來insert所有的行到目標表中,不需要連線到源表和目標表

4、update子句後面可以跟delete去除一些不需要的行

語法:

merge   into schema .table t_alias

using  schema . t_alias

on (condition)

when  matched  then 

merge_update_clause

when  not  matched  then 

merge_insert_clause / merge_delete_clause;

舉例說明:

1、匹配更新

2、不匹配插入

3、匹配不帶where更新

4、匹配帶where更新、插入

5、on常量表示式

6、匹配刪除、不匹配插入

7、源表為子查詢(自連線)

優點:

—避免了分開更新

—提高效能並易於使用

—在資料倉儲應用中十分有用

—使用merge比傳統的先判斷再選擇插入或更新快很多

需要注意的地方:

1、從語法條件上看(on (join condition)),merge into也是乙個危險的語法。如果不慎重使用,會將源表全部覆蓋到目標表,既危險又浪費效率,違背了增量同步的原則。所以在設計表結構時,一般每條記錄都有「更新時間」的字段,用目標表「最大更新時間」判斷源表資料是否有更新和新增的資訊。

2、更新的字段,不允許有關聯條件的字段(join condition)。比如條件是 a.id=b.id,那麼使用「set a.id=b.id」將報出乙個莫名其妙的提示錯誤。

如何將批處理做成類流處理 merge into

例如 隨著人工智慧的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容。需要在前端頁面上設計成實時的資料,但是沒有flink,所以只能把批處理做成類流處理 更新存在的 update employe as em set salary select sal...

oracle中累計求和 oracle累計求和

poj2001 shortest prefixes trie樹應用 沉迷wow又頹了兩天orz,暴雪爸爸要在國服出月卡了.這是要我好好學習嗎?趕緊來刷題了.oj 題目大意是求所有字串裡每乙個字元 硬體相關 jtag介面 jtag joint test action group,聯合測試行動小組 是一...

oracle中累計求和 oracle累計求和

oracle累計求和 將當前行某列的值與前面所有行的此列值相加,即累計求和 方法一 with t as select 1 val from dual union all select 3 from dual union all select 5 from dual union all select ...