MERGE 是 Oracle9i 新增的語法,根據源表對目標表進行匹配查詢,匹配成功時更新,不成功時插入
比單獨的 update + insert 的方式效率要更高,尤其是on條件下有唯壹索引的時候,效率更高。
使用場景
在寫數據同步的腳本時,常常會遇到這樣的需求:‘存在時 - 更新,不存在時,插入’1
語法
MERGE INTO 目標表 a
USING 源表 b
ON (a.字段1 = b.字段2 and a.字段n = b.字段n)
WHEN MATCHED THEN
UPDATE SET a.新字段 = b.字段
WHERE 限制條件
WHEN NOT MATCHED THEN
INSERT (a.字段名1,a.字段名n) VALUES(b.字段值1, b.字段值n)
WHERE 限制條件123456789
基礎數據
源表1:同上基礎數據(0.1)
目標表:
CREATE TABLE stu1
AS SELECT * from student t where t.id = 1;1234
實例
MERGE INTO stu1 a
USING student b
ON (a.sid = b.sid) -- 必須帶 ‘()’括號
WHEN MATCHED THEN -- 整體掃描,匹配時,執行此處
UPDATE SET a.sname = '小倩'
<DELETE>
WHEN NOT MATCHED THEN -- 整體掃描,不匹配時,執行此處
INSERT (a.sid, a.xm)VALUES(5, 'e')
本文來自 魚丸丶粗面 的CSDN 博客 ,全文地址請點擊: /qq_34745941/article/details/81176140?utm_source=copy