好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 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函數用法詳解的相關信息資訊供網民參考!
  • 推薦文章