逐条更新数据 sql

       前些天更新数据时,update语句之后没加Where语句,结果更新后数据结果都是一样了,麻烦了,幸好有备份的数据,但想了想,不用数据库的还原功能应该也可以吧,用SQL语句应该可以还原的。     于是,就写了个SQL语句,供不小心,忘记更新数据少加Where语句的朋友看看 。
declare   @tid   int         
declare   @fid   int
declare   @i   int
declare   @j   int
set   @j = ( select   count ( * from  tbl1.dbo.dnt_topics)
set   @i = 1          
while     @i < @j          
begin              
    
set   @tid   =  ( select  tid  from  (  select  ROW_NUMBER()  over  ( order   by  tid  asc  )  as  Row, tid,fid  from  dnt_topics )  as  sp   where  Row = @i )
    
set   @fid = ( select  fid  from  (  select  ROW_NUMBER()  over  ( order   by  tid  asc  )  as  Row, tid,,fid  from  dnt_topics )  as  sp   where  Row = @i )                 
    
update              
        tbl2.dbo.dnt_topics          
    
set                   
        fid
= @fid          
    
where               
        tid
= @tid                      
        
set   @i = @i + 1          
end   
    其中,@tid表示更新限制的条件,@fid表示要更新的数据,定义@i和@j是为了方便方便循环更新,在这T_SQL语句中用了SQL2005自带的函数ROW_NUMBER(),
这个函数是给查询的结果自动添加一列,以便知道当前数据的位置。
值得推荐的购物网站:

转载于:https://www.cnblogs.com/ruolinzhanyuan/archive/2008/07/08/1238367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值