SQL2008中Merge的用法

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

首先是對merge的使用說明:code

merge [into] [目標表]
using <源表>
on 條件
when matched 操做
when not matched 操做;

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

能夠看到,這兩張表中的內容仍是比較簡單的,兩張表經過一個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);
複製代碼

 這樣  就能夠將兩個表中間的數據進行同步而且進行更新,確實很方便,最終獲得結果爲:it

可是若是想讓匹配的數據刪除掉,而且若是子表中沒有數據就插入,這個該如何用呢,固然得涉及到delete的操做了:class

複製代碼
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);
複製代碼

這樣獲得的結果爲:date

但願有用。方法

相關文章
相關標籤/搜索