sql server case when then 的一条语句的疑问
select@count=@count+1,@ID=casewhen@count<=@pageSize*@pageIndexthen[cid]else@IDendfrom...
select @count=@count+1,@ID=case when @count<=@pageSize*@pageIndex then [cid] else @ID end from t_czy order by px;我在别人的分页存储过程看到的 没看明白 求解释下 谢谢
展开
1个回答
展开全部
没有看到整个存储过程的语句,当就这一条语句看不出什么东西。
更多追问追答
追答
@pageSize和@pageIndex应该的值应该是有由外部传入的吧。
倒推来看:@sql语句中,@pageSize是一个确定的值,只有@ID是通过计算得来的,@ID就是指定页的前一个ID,假如你要提取第6页,那么@ID就因该是第5页的最后一个ID。
再看Select @count这一行:@count是行号,当@count<=@pageSize*@pageIndex,@ID就等于ID,否则@ID就保持原值不变,因为@count是增加的,所以这个@ID保存的值应该就是@count=@pageSize*@pageIndex时的ID值。假如@pageSize=10,@pageIndex=5,此时@ID应该保存的是按照px升序排列后,第50行的ID值。
这里附带有几个疑问:
1:当@pageIndex=5,Select top查询的却是第6页的内容。
2:第三行和第四行的语句一个有order By,一个没有,会对结果影响吧。
3:@count没有设置初始值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询