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;我在别人的分页存储过程看到的 没看明白 求解释下 谢谢 展开
 我来答
sysplay
2016-06-12 · TA获得超过1155个赞
知道小有建树答主
回答量:663
采纳率:86%
帮助的人:528万
展开全部
没有看到整个存储过程的语句,当就这一条语句看不出什么东西。
更多追问追答
追问

追答
@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没有设置初始值
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式