天天看點

java sql merge_SQL中MERGE的用法

簡介

Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能将Insert,Update,Delete簡單的并為一句。MSDN對于Merge的解釋非常的短小精悍:”根據與源表聯接的結果,對目标表執行插入、更新或删除操作。例如,根據在另一個表中找到的差異在一個表中插入、更新或删除行,可以對兩個表進行同步。”,通過這個描述,我們可以看出Merge是關于對于兩個表之間的資料進行操作的。

可以想象出,需要使用Merge的場景比如:

資料同步

資料轉換

基于源表對目标表做Insert,Update,Delete操作

MERGE INTO文法如下:

MERGE INTO table_name alias1

USING (table|view|sub_query) alias2

ON (join condition)

WHEN MATCHED THEN

UPDATE

SET col1 = col1_val1,

col2 = col2_val2

WHEN NOT MATCHED THEN

INSERT (column_list) VALUES (column_values);

其中,table_name 指的是更新的表,using()裡邊的指的是資料來源表/視圖/子查詢結果集,condition指的是連接配接條件,如果滿足連接配接條件,set 字段1=值1,字段2=值2..

執行個體如下:

MERGE INTO gdps_memberbank c

USING dual

ON (c.cltno= #cltno#)

WHEN MATCHED THEN

UPDATE

SET c.mb_flag=mb_flag

WHERE c.cltno=#cltno#

WHEN NOT MATCHED THEN

INSERT(CLTNO,MB_FLAG)

VALUES (#cltno#,#mb_flag#)

在gdp_memberbank目标表和dual源表中查詢cltNo是否用相同字段的資訊,有的話執行update,沒有的話執行insert;

上一篇: day06_反射02