在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...