在一些業務中,經常會用到對資料的比對,不存在插入,在源表中存在則更新,在源表不存在目標表存在則刪除,一般都是會通過if else判斷,
merge關鍵字是乙個神奇的dml關鍵字。它在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。
首先建立兩張表,源表(sourcetable)和目標表(targettable)
其中sourcetable資料如下
targettable資料如下
merge進行資料操作
merge into targettable as t結果如下:using sourcetable as s
on t.id=s.id
when matched
then update set t.note=s.note
when not matched
then insert values(s.id,s.note)
when not matched by source
then delete;
merge還有乙個強大的功能是通過output子句,可以將剛剛做過變動的資料進行輸出
merge into targettable as t操作結果如下:using sourcetable as s
on t.id=s.id
when matched
then update set t.note=s.note
when not matched
then insert values(s.id,s.note)
when not matched by source
then delete
output $action as [action],inserted.id,
inserted.note,
deleted.id,
deleted.note;
當然,你也可以僅僅新增或是僅僅刪除
merge into targettable as tusing sourcetable as s
on t.id=s.id
when not matched
then insert values(s.id,s.note);
SqlServer 2008 中Merge的應用
簡介 sqlserver 2008中新增加了merge這個dml關鍵字,msdn對於merge的解釋 根據與源表聯結的結果,對目標表執行insert,update,delete操作.例如 根據目標表與源表的差異,在目標表中執行執行insert,update,delete操作,實現兩個表的同步.語法 ...
Sql Server 2008 中Merge的用法
本文摘自其它 sql server 2008中的merge語句能做很多事情,它的功能是根據源表對目標表執行插入 更新或刪除操作。最典型的應用就是進行兩個表的同步。下面通過乙個簡單示例來演示merge語句的使用方法,假設資料庫中有兩個表product及productnew,我們的任務是將product...
SQL Server中的Merge關鍵字
merge關鍵字是乙個神奇的dml關鍵字。它在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。msdn對於merge的解釋非常的短小精悍 根據與源表聯接的結果,對目標表執行插入 更新或刪除操作。例如,根據在另乙個表中找到的差異在乙個表中插入 更新或...