天天看點

轉Merge的用法

在SQL2008中,新增了一個關鍵字:Merge,這個和Oracle的Merge的用法差不多,隻是新增了一個delete方法而已。下面就是具體的使用說明:

首先是對merge的使用說明:

merge [into] [目标表]

using <源表>

on 條件

when matched 操作

when not matched 操作;

首先,請參看兩張表 TableThis和TableThat:

可以看到,這兩張表中的内容還是比較簡單的,兩張表通過一個tbThisID進行主鍵和外鍵的關聯,那麼如如果想實作二者之間的資料同步,該如何進行呢,請看具體的Merge代碼:

merge into TableThat as a

using TableThis as b

on a.tbThisID = b.tbThisID

when matched then

update set a.tbContent=a.tbContent+'-'+b.tbThisPhone

when not matched then

insert (tbThisID,tbContent)

values(b.tbThisID,b.tbThisPhone);

 這樣  就可以将兩個表中間的資料進行同步并且進行更新,确實很友善,最終得到結果為:

但是如果想讓比對的資料删除掉,并且如果子表中沒有資料就插入,這個該如何用呢,當然得涉及到delete的操作了:

merge into TableThat as a

using TableThis as b

on a.tbThisID = b.tbThisID

when matched then

delete

when not matched then

insert (tbThisID,tbContent)

values(b.tbThisID,b.tbThisPhone);

這樣得到的結果為:

希望有用。