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

  • 相关阅读:
    设计模式--17、建造者模式
    设计模式--16、原型模式
    面向对象的几大设计原则
    设计模式--15、模板方法模式
    设计模式--14、中介者模式
    设计模式--13、享元模式
    设计模式--12、外观模式
    设计模式--11、命令模式
    消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?
    Kafka,Mq,Redis作为消息队列有何差异?
  • 原文地址:https://www.cnblogs.com/guorongtao/p/13821513.html
Copyright © 2020-2023  润新知