merge[SQL語句]

MERGE語句是SQL語句的一種。在SQL Server、Oracle資料庫中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的語法,用來合併UPDATE和INSERT語句。通過MERGE語句,根據一張表(原數據表,source table)或子查詢的連線條件對另外一張(目標表,target table)表進行查詢,連線條件匹配上的進行UPDATE,無法匹配的執行INSERT。這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高於INSERT+UPDATE。

概述

具體來說,MERGE語句會檢查原數據表記錄和目標表記錄。如果記錄在原數據表和目標表中均存在,則目標表中的記錄將被原數據表中的記錄所更新( 執行Update操作);如果目標表中不存在的某(些)記錄,在原數據表中存在,則原數據表的這(些)記錄將被插入到目標表中( 執行Insert操作)。

在Oracle 10g之前,merge語句支持匹配更新和不匹配插入兩種簡單的用法,在10g中Oracle對merge語句做了增強,增加了條件選項和DELETE操作。

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;

代碼及說明

1.MERGE INTO test T1

2.USING (SELECT OWNER , OBJECT_NAME , MAX(ID) ID FROM T GROUP BY OWNER, OBJECT_NAME) T

3.ON (T.OWNER = T1.OWNER AND T.OBJECT_NAME = T1.TABLE_NAME)

4.WHEN MATCHED THEN UPDATE SET T1.ID = T.ID

5.WHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.OWNER, T.OBJECT_NAME);

第一行 命名目標表並給別名T1

第二行 using子句提供merge操作的數據源,命名T

第三行 on子句指定合併的條件

第四行 when matched then 子句判定條件符合則對表T1做什麼改變(或刪除)

第五行 when not matched then 子句判斷條件不符合則插入的操作

相關詞條

相關搜尋

熱門詞條

聯絡我們