重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本篇內容主要講解“如何實現關聯子查詢Update語句更新數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何實現關聯子查詢Update語句更新數據”吧!
成都創新互聯公司專注于海安企業網站建設,響應式網站開發,商城開發。海安網站建設公司,為海安等地區提供建站服務。全流程定制網站建設,專業設計,全程項目跟蹤,成都創新互聯公司專業和態度為您提供的服務
Update是T-sql中再簡單不過的語句了,update table set column=expression [where condition],我們都會用到。但update的用法不僅于此,真正在開發的時候,靈活恰當地使用update可以達到事半功倍的效果。
假定有表Table1(a,b,c)和Table2(a,c),現在Table1中有些記錄字段c為null,要根據字段a在Table2中查找,取出字段a相等的字段c的值來更新Table1。一種常規的思路,通過游標遍歷Table1中字段c為null的所有記錄,在循環體內查找Table2并進行更新,即用游標Cursor的形式。測試sql語句如下:
--1.創建測試表 create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10), CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] create TABLE Table2 ( a varchar(10), c varchar(10), CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] GO --2.創建測試數據 Insert into Table1 values('趙','asds',null) Insert into Table1 values('錢','asds','100') Insert into Table1 values('孫','asds','80') Insert into Table1 values('李','asds',null) Insert into Table2 values('趙','90') Insert into Table2 values('錢','100') Insert into Table2 values('孫','80') Insert into Table2 values('李','95') GO select * from Table1 --3.通過游標方式更新 declare @name varchar(10) declare @score varchar(10) declare mycursor cursor for select a from Table1 where c is null open mycursor fetch next from mycursor into @name while(@@fetch_status = 0) BEGIN select @score=c from Table2 where a=@name update Table1 set c = @score where a = @name fetch next from mycursor into @name END close mycursor deallocate mycursor GO --4.顯示更新后的結果 select * from Table1 GO --5.刪除測試表 drop TABLE Table1 drop TABLE Table2
雖然用游標可以實現,但代碼看起來很復雜,其實用Update根據子關聯來更新只要一條語句就可以搞定了,測試代碼如下:
--1.創建測試表 create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10), CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] create TABLE Table2 ( a varchar(10), c varchar(10), CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] GO --2.創建測試數據 Insert into Table1 values('趙','asds',null) Insert into Table1 values('錢','asds','100') Insert into Table1 values('孫','asds','80') Insert into Table1 values('李','asds',null) Insert into Table2 values('趙','90') Insert into Table2 values('錢','100') Insert into Table2 values('孫','80') Insert into Table2 values('李','95') GO select * from Table1 --3.通過Update方式更新 Update Table1 set c = (select c from Table2 where a = Table1.a) where c is null GO --4.顯示更新后的結果 select * from Table1 GO --5.刪除測試表 drop TABLE Table1 drop TABLE Table2
到此,相信大家對“如何實現關聯子查詢Update語句更新數據”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!