婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLServer中merge函數用法詳解

SQLServer中merge函數用法詳解

熱門標簽:濮陽清豐400開頭的電話申請 臺灣外呼系統軟件 南通智能外呼系統怎么樣 地圖標注跑線下市場 樂昌電話機器人 地圖標注可以編輯地名嗎 疫情時期電話機器人 南京怎么申請400這種電話 真3地圖標注

Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Delete簡單的并為一句。MSDN對于Merge的解釋非常的短小精悍:”根據與源表聯接的結果,對目標表執行插入、更新或刪除操作。

MERGE 目標表

USING 源表

ON 匹配條件

WHEN MATCHED THEN

語句

WHEN NOT MATCHED THEN

語句;

其中最后語句分號不可以省略,且源表既可以是一個表也可以是一個子查詢語句

WHEN NOT MATCHED BY TARGET

表示目標表不匹配,BY TARGET是默認的,所以上面我們直接使用WHEN NOT MATCHED THEN

WHEN NOT MATCHED BY SOURCE

表示源表不匹配,即目標表中存在,源表中不存在的情況。

主要用法:

merge無法多次更新同一行,也無法更新和刪除同一行

當源表和目標表不匹配時:若數據是源表有目標表沒有,則進行插入操作若數據是源表沒有而目標表有,則進行更新或者刪除數據操作當源表和目標表匹配時:進行更新操作或者刪除操作when matched 這個子句可以有兩個,當有兩個時,第一個子句必須是when matched and condition且兩個matched子句只會執行一個,且兩個子句必須是一個update和一個delete操作when not matched by source和上面類似

merge icr_codemap_bak as a
using icr_codemap as b
on a.COLNAME = b.COLNAME and a.ctcode = b.ctcode
when matched and b.pbcode > a.pbcode
then update set a.pbcode = b.pbcode
when not matched
then insert values(b.colname,b.ctcode,b.pbcode,b.note)
;

可以比對字段不一致進行更新

https://technet.microsoft.com/zh-cn/library/bb510625.aspx  這個是MSDN的網址

在 Merge Matched 操作中,只能允許執行 UPDATE 或者 DELETE 語句。
在 Merge Not Matched 操作中,只允許執行 INSERT 語句。
一個 Merge 語句中出現的 Matched 操作,只能出現一次 UPDATE 或者 DELETE 語句,否則就會出現下面的錯誤 - An action of type 'WHEN MATCHED' cannot appear more than once in a 'UPDATE' clause of a MERGE statement.
Merge 語句最后必須包含分號,以 ; 結束。

ps:SQL Server中Merge-using的用法

在執行之前:

merge into UserInfo u
using chartinfo c on u.UserId=c.UserId
when matched and u.UserName=c.UserName
 then update set u.lastUpdate=c.LastUpdate
when not matched --為not matched時 不能為update(沒有匹配成功 當然不能update了)
 then insert (UserName,Sex)values('ZhangZhao','b');

執行之后

Merge和using搭配用于特別是BI上數據統計和分析上 比如 要求子表中沒有的數據那么父表中就要刪除對應的數據 保證子表和父表的數據對應 如果按照常規的做法是 跑個作業 然后通過游標/表值函數/臨時表等等循環的獲取數據然后更新父表  這樣是很浪費效率的  這時Merge派上用場了。

您可能感興趣的文章:
  • SqlServer2000+ 身份證合法校驗函數的示例代碼
  • Sqlserver 自定義函數 Function使用介紹
  • SQLServer行列互轉實現思路(聚合函數)
  • SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同
  • SQLServer中Partition By及row_number 函數使用詳解
  • sqlserver四舍五入使用round函數及cast和convert函數
  • 談談sqlserver自定義函數與存儲過程的區別
  • SQLServer之常用函數總結詳解

標簽:南京 廣安 福建 陜西 河北 阿里 通遼 馬鞍山

巨人網絡通訊聲明:本文標題《SQLServer中merge函數用法詳解》,本文關鍵詞  SQLServer,中,merge,函數,用法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLServer中merge函數用法詳解》相關的同類信息!
  • 本頁收集關于SQLServer中merge函數用法詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 城市| 白朗县| 金平| 靖边县| 新蔡县| 苍溪县| 黑山县| 肃宁县| 海阳市| 如皋市| 万山特区| 当雄县| 海盐县| 清镇市| 安远县| 广汉市| 始兴县| 阿荣旗| 河津市| 青浦区| 桓台县| 萨嘎县| 定州市| 海晏县| 德昌县| 新干县| 固原市| 昌乐县| 长宁县| 利津县| 米林县| 安国市| 连州市| 萝北县| 萨嘎县| 五家渠市| 虎林市| 津南区| 晋城| 江城| 牙克石市|