补充,paiming这一列的值都是循环的最后一个值(也即统一个值)。

解决方案 »

  1.   

    补充,paiming这一列的值都是循环的最后一个值(也即统一个值)。现在是一个错的结果
      

  2.   

    select @count=count(*) from  ceshi where xueqi=@xueqi and xueyuan=@xueyuan
    WHILE @count> 0
        BEGIN
        update ceshi set paiming=@IDceshi where xueqi=@xueqi and xueyuan=@xueyuan
        SET @count = @count -1
        SET @IDceshi=@IDceshi+1
        END 
    RETURN查询count和更新语句的条件都是一样的,说明你在更新的时候不是逐条去更新的,而是直接全部更新,对于变量@count而言,最后一个值要大于0,当然最后更新完就是1了。
      

  3.   

    那怎么去改呢,就是想让paiming字段为1一直到@count,就是插入一列从小到大的“排名序号”。
      

  4.   

    测试数据和结果发一下,直接用with cte和row_number就可以更新了,不用while。
      

  5.   

    max  或者  直接对cte的记录数count下。