快活林资源网 Design By www.csstdc.com
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 子查询
快活林资源网 Design By www.csstdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
快活林资源网 Design By www.csstdc.com
暂无评论...
更新日志
2024年05月01日
2024年05月01日
- 戏班-就是这个调调【FLAC分轨】
- 黄品源《寂寞旋律》[WAV+CUE][367M]
- 群星《家传户晓~我们三十年的主题曲XRCD》[WAV分轨][532M]
- 谢军《那一夜+又一夜》2CD[WAV分轨][1.2G]
- 苏有朋.1992-我只要你爱我【飞碟】【WAV+CUE】
- 谢金燕.2010-爱你辣【乾坤唱片】【WAV+CUE】
- 何洁.2012-敢爱【华谊兄弟】【FLAC+CUE】
- 王晰《LowC的诱惑HQCD》[低速原抓WAV+CUE]
- 张智-巴克图口岸[FLAC]
- 中国古典名曲珍藏版之一阳春白雪【WAV+CUE】
- 萨顶顶.2010-天地合【环球】【WAV+CUE】
- 尚雯婕.2007-关于我们【华谊兄弟】【FLAC分轨】
- 蔡诗芸.2012-黑色彩虹【金信子】【WAV+CUE】
- 卓依婷《精选集》原音母版1:1直刻[低速原抓WAV+CUE][537M]
- 群星《国语金曲尽精英》[DSF][1.4G]