SQL 语句对每一行进行循环操作的几种方法

SQL 语句对每一行进行循环操作的几种方法

1、游标

1
2
3
4
5
6
7
8
9
10
11
12
Declare @SN varchar(16)   --变量
Declare iCursor Cursor For  --游标
     select Distinct SNum from Table1 where zd1 like '%test%'
Open iCursor  --打开游标
FETCH Next from iCursor Into @SN--用来对每一行来进行循环操作
WHILE @@FETCH_STATUS = 0
Begin
    --此处对每一行要进行的操作的代码
    Fetch Next from iCursor into @SN
END
CLOSE iCursor  --关闭游标
DEALLOCATE iCursor

  

2、IDENTITY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select * from Table1 where zd1 like '%test%'
select zd2,IDENTITY(INT,1,1) AS RNum
    into #TempSN    --插入临时表
    from Table1
    where zd1 like '%test%'
    ORDER BY zd2
 
Declare @maxRow int --用来获得最大的 行数
Declare @rowNo int
Select @maxRow=max(RNum) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个行来进行循环操作
Begin
    --此处对每一行要进行的操作的代码
    Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表 

  

3、RowNumber (SQL 2005 以上含版本支持)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select * from Table1 where zd1 like '%test%'
 
select zd2,ROW_NUMBER() OVER(ORDER BY zd2) AS RowNumber
    into #TempSN   --插入临时表
    from Table1
    where zd1 like '%test%'
 
Declare @maxRow int --用来获得最大的rowNumber
Declare @rowNo int
Select @maxRow=max(rownumber) from #TempSN
set @rowNo=1
While @rowNo<=@maxRow --用来对每一个rowNumber来进行循环操作
Begin
    --此处对每一行要进行的操作的代码
    Set @rowNo=@rowNo+1
End
Drop Table #TempSN--清除临时表

  

  

 

创建时间:2020.10.15  更新时间:

 

posted on   滔Roy  阅读(3007)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2019-10-15 Delphi 窗体函数 ShowScrollBar 控制滚动条

导航

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