本篇文章給大家分享的是有關SQL Server中怎么使用Merge語句,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
富裕網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。
面舉一個例子來具體說明一下: 有兩個表SourceTable為登陸表,TargetTable為授權表,如果訪問用戶在登陸表中,更新授權表的授權級別,否則授權0表示游客。sql語句如下: --SourceTable為登陸表,TargetTable為授權表 --如果訪問用戶在登陸表中,更新授權表的授權級別,否則授權0表示游客。 create table SourceTable(UserName nvarchar(10),Pwd int,[Level] int) create table TargetTable(UserName nvarchar(10),[Level] int) go --下面是SQL Server2008新增的賦值功能,更多新功能請參見 insert into SourceTable values('user1','111',1),('user2','222',2),('user3','333',3) insert into TargetTable values('user1',1),('user2',2) 一般情況,我們會寫如下的語句:復制代碼 代碼如下: declare @UserName varchar(10) = 'user2'--表示某個登陸的用戶名 merge into TargetTable as tg using (select UserName,[Level] from SourceTable where UserName=@UserName) as sr(UserName,[Level]) on tg.UserName=sr.UserName when matched then update set [Level]=sr.[Level]--更新授權級別 when not matched by target then insert (UserName,[Level]) values(@UserName,0)--表示游客 output $action;
執(zhí)行結果為UPDATE,表示執(zhí)行了更新操作,也正是我們想要的。 但是如果我們把@UserName賦值為'user6',希望能在TargetTable中插入一條記錄,但是實際執(zhí)行結果為空,顯示什么都沒執(zhí)行。原因就是using (select UserName,[Level] from SourceTable where UserName=@UserName) as sr(UserName,[Level]) on tg.UserName=sr.UserName這個語句中,sr結果集為空,所以merge語句就不向后執(zhí)行了,不知道這是不是SQL Server的bug。 下面的SQL可以解決上面的問題:復制代碼 代碼如下: declare @UserName varchar(10) = 'user7'--表示某個登陸的用戶名 merge into TargetTable as tg using (select @UserName) as sr(UserName) on tg.UserName=sr.UserName when matched then update set [Level]= (select top 1 [Level] from SourceTable where UserName=@UserName) --更新授權級別 when not matched by target then insert (UserName,[Level]) values(@UserName,0)--表示游客 output $action;
以上就是SQL Server中怎么使用Merge語句,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標題:SQLServer中怎么使用Merge語句
網(wǎng)頁鏈接:http://www.rwnh.cn/article24/jipgce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站策劃、品牌網(wǎng)站建設、品牌網(wǎng)站制作、小程序開發(fā)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)