Oracle覆盖更新和插入-merge into用法

378 阅读1分钟

merge into可以同时从一个或多个源表对目标表进行更新、插入、删除数据,经常用于操作大量的数据,即对于大批量的数据更新、插入时效率极高。

--例句:

MERGE INTO A USING B ON A.ID_NO=B.ID 
WHEN MATCHED THEN UPDATE/DELETE SET A.NAME=B.NAME,A.SCORE=B.SCORE 
WHEN NOT MATCHED THEN INSERT (A.ID_NO,A.NAME,A.SCORE) VALUES (B.ID,B.NAME,B.SCORE);

释义:以A表为目标表,若A表中ID_NO不存在和B表(源表)中ID相等的,则插入A表;否则,把B表中的值更新到A表对应的记录中。

A表:

image.png

B表:

image.png

MERGE INTO TB_TEST A USING TB_IMPORT B ON (A.ID=B.ID)
WHEN MATCHED THEN UPDATE SET A.NAME=B.NAME
WHEN NOT MATCHED THEN INSERT (A.ID,A.NAME) VALUES (B.ID,B.NAME);

image.png

结果:A表:

image.png