sql 给某一列动态插入序号

zxmwmj 2014-07-03 11:08:55
DECLARE @count int
DECLARE @IDceshi int
set @count=0
set @IDceshi=1
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
这样执行的字段为“paiming”的一列的值全是“1”我想让“paiming”这个字段的值是一个从1到@count(记录总数)的序号,这个怎么添加,感谢。
...全文
423 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcHerat 元老 2014-07-03
  • 打赏
  • 举报
回复
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了。
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
补充,paiming这一列的值都是循环的最后一个值(也即统一个值)。现在是一个错的结果
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
补充,paiming这一列的值都是循环的最后一个值(也即统一个值)。
ran丶 2014-07-03
  • 打赏
  • 举报
回复
在循环 @IDceshi+1
AcHerat 元老 2014-07-03
  • 打赏
  • 举报
回复
max 或者 直接对cte的记录数count下。
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
也就是伪列的最后一个数。
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
用你的方法搞定了,但怎么取伪列的总数,也就是记录的总数。
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
谢谢楼上,搞定了,但怎么取伪列的总数,也就是记录的总数。
AcHerat 元老 2014-07-03
  • 打赏
  • 举报
回复
测试数据和结果发一下,直接用with cte和row_number就可以更新了,不用while。
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
字段的值可以看作一个数组吗?我可以用循环来插入?
zxmwmj 2014-07-03
  • 打赏
  • 举报
回复
那怎么去改呢,就是想让paiming字段为1一直到@count,就是插入一列从小到大的“排名序号”。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧