国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > 文庫 > 正文

利用帶關聯子查詢Update語句更新數據的方法

2020-10-29 21:50:30
字體:
來源:轉載
供稿:網友

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語句,update 子查詢

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湾仔区| 图片| 盘山县| 年辖:市辖区| 花垣县| 枞阳县| 石家庄市| 苗栗县| 建宁县| 太湖县| 澎湖县| 北票市| 星子县| 通河县| 平顶山市| 虹口区| 库伦旗| 江永县| 宝山区| 湘阴县| 海丰县| 汉寿县| 固安县| 旅游| 杂多县| 丹寨县| 神农架林区| 遵义县| 黎川县| 玛沁县| 白玉县| 满城县| 青州市| 黎平县| 清河县| 乌拉特前旗| 武川县| 泾川县| 格尔木市| 万载县| 集贤县|