在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);
這樣得到的結果為:
希望有用。