SQL2008中Merge的用法

2021-09-07 19:28:38 字數 1874 閱讀 8245

在sql2008中,新增了乙個關鍵字:merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明:

首先是對merge的使用說明:

merge

[into][

目標表]

using

<

源on條件  --這個條件一般指對目標表的限制,如果想對原表限制,請《源表》中使用子查詢和條件

when

matched 操作

when

notmatched 操作;

首先,請參看兩張表 tablethis和tablethat:

可以看到,這兩張表中的內容還是比較簡單的,兩張表通過乙個tbthisid進行主鍵和外來鍵的關聯,那麼如如果想實現二者之間的資料同步,該如何進行呢,請看具體的merge**:

merge

into

tablethat

asa

using tablethis asb

ona.tbthisid

=b.tbthisid

when

matched

then

update

seta.tbcontent

=a.tbcontent+'

-'+b.tbthisphone

when

notmatched

then

insert

(tbthisid,tbcontent)

values

(b.tbthisid,b.tbthisphone);

這樣  就可以將兩個表中間的資料進行同步並且進行更新,確實很方便,最終得到結果為:

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

merge

into

tablethat

asa

using tablethis asb

ona.tbthisid

=b.tbthisid

when

matched

then

delete

when

notmatched

then

insert

(tbthisid,tbcontent)

values

(b.tbthisid,b.tbthisphone);

這樣得到的結果為:

希望有用。

另外,如果想對源表進行篩選,也是可以的,在原表處使用括號和子查詢,例如:

merge into tablethat as

a using (

select

*from tablethis where tbthisid=

5) as

bon a.tbthisid =

b.tbthisid

when matched then

delete

whennot matched

then

insert

(tbthisid,tbcontent)

values(b.tbthisid,b.tbthisphone);

這樣就可以先從源頭控制了。

出處:

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...