前言
在实践中我们会遇到这样的问题,知道某条记录的id,然后需要判断此条记录如果按照id进行排序分页,此条记录在第几页。今天这篇文章为大家提供一个思路。
下面话不多说了,来一起看看详细的实现方法吧
根据ID查询分页位置
根据ID来查询分页位置,比如按照ID的倒序排列,则可通过以下SQL查询出大于此ID记录数:
select count(id) from user where id > 5;
示例中user为表名,5位待匹配的id。很显然,因为是倒序排序只需查找大于此id的记录数即可,如果是正序排列,则小于此id即可。
当查出count值之后,怎么计算当前记录位于第几页呢,这里以java代码示例计算:
int pageSize = 10;
// 假设上面查出的结果为count,值为11
int count = 11;
// 计算当前记录所在的pageNum
// 通过取模并加1获得当前页数为第2页
int pageNum = count/pageSize + 1;
// 如果想进一步获得在某页的某个位置,则再进行取余即可,即第2页的第1条记录(从0开始)
int index = count%pageSize;
多维度排序定位
上面通过简单的ID进行排序还是比较好解决的,那么如果现在查询某条记录排序的维度不仅仅是ID,比如先按照年龄(age)进行倒序排序,如果age相同,则再跟进ID进行倒序排序。基本的sql语句如下:
select id, age