sql server排序后分页的出现一条丢失一条重复情况

在sqlsever中实现分页常用的是使用以下语句

 

select top 10 *  from [PRD_KPI].[dbo].[student]  
where id not in (  
  select top 0  id  from [PRD_KPI].[dbo].[student]    order by grade   desc
)  
 order by grade   desc

这个是选取前十条,如果是11~20条的改成如下即可

 

 

select top 10 *  from [PRD_KPI].[dbo].[student]  
where id not in (  
  select top 10  id  from [PRD_KPI].[dbo].[student]    order by grade   desc
)  
 order by grade   desc

然而这样做会出现以下bug

 

 

分数一样的几个数据,可能会出现多次排序而结果不一致的情况,这样如果相同分数在边界的时候,比如 当"李白","尔康","杜甫"三个人分数一样并且排在9到11,以10行为一页时可能会出现其中一个出现两次,而另外一个却没显示的bug。

 

而在hibernate中使用setFirstResult,setMaxResults对sqlserver数据库进行分页时使用的就是以上分页的实现。导致这个bug找了半天。

解决方法一次全部读完,再用subList分割



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值