随笔 - 52  文章 - 0  评论 - 468  阅读 - 59万

对Sql进行类似For循环处理

     今天遇到1个很是无语的问题。。。由于开发人员的版本更新导致用户在今天所开之单据的CreatDate都变成了yyyy-MM-dd格式,原本应该为
yyyy-MM-dd hh:mm:ss:fff格式。于是,只能手动更新数据了 -_-!

复制代码
代码
 1 declare @itemnumber int --定义需要循环的次数
 2 declare @tagint int --定义标志字段,用于结束循环
 3 set @tagint=1
 4 select @itemnumber = count(distinct Creater) from Demo_TestTable where isnull(Creater,'')<>'' And 
   DATEDIFF(DAY,CreatDate,GETDATE())<1
 5   if(@itemnumber>0)
 6   begin
 7     while @tagint<=@itemnumber
 8         begin
 9             waitfor delay '00:00:01' --每隔一秒再执行 可用参数变量替换
10             Update Demo_TestTable set CreatDate=GETDATE() where Creater =(
11             Select Creater from (
12                 select Creater,ROW_NUMBER() over(order by Creater) as RowID from Demo_TestTable where 
            isnull(Creater,'')<>'' And DATEDIFF(DAY,CreatDate,GETDATE())<1 group by Creater
13              ) TableA
14              where  TableA.RowID=@tagint
15              )
16              set @tagint=@tagint+1
17         end
18   end
复制代码

 

    当然今天出现的情况因其特殊性有更简单的写法,但此法具体一般性. @tagint即类似于For循环中的i,通过在查询时设置Row_Number()行号来遍历得到每1个需要Update的ID,进而进行相关的处理

posted on   牦牛  阅读(29224)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示