SQL 语句对每一行进行循环操作的几种方法
1、游标
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
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 以上含版本支持)
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 更新时间: