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

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  更新时间:

 

posted on 2020-10-15 16:51  滔Roy  阅读(2917)  评论(0编辑  收藏  举报

导航