Mysql如何查询某条记录在分页的第几页详析
16lz
2021-12-25
前言
在实践中我们会遇到这样的问题,知道某条记录的id,然后需要判断此条记录如果按照id进行排序分页,此条记录在第几页。今天这篇文章为大家提供一个思路。
下面话不多说了,来一起看看详细的实现方法吧
根据ID查询分页位置
根据ID来查询分页位置,比如按照ID的倒序排列,则可通过以下SQL查询出大于此ID记录数:
select count(id) from user where id > 5;
当查出count值之后,怎么计算当前记录位于第几页呢,这里以java代码示例计算:
int pageSize = 10;// 假设上面查出的结果为count,值为11int 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 from user order by age desc,id desc;
首先,多条件排序的难度在于age相同的情况,如果age不相同,只需如下sql即可像《根据ID查询分页位置》一样定位出id的位置:
select count(id) from user where age > 18;
那么当age用重复的情况如何处理呢。当然,可以通过复杂的关联查询或子表查询来实现,这里通过另外一种方式,就是再查询一下age相同,并且id大于当前用户的记录条数:
select count(id) from user where age = 18 and id > 5;
此种方案虽然查询了两次数据库,如果很好的建立索引,比关联查询或子查询要方便、简洁和高效一些。
小结
更多相关文章
- MySQL系列多表连接查询92及99语法示例详解教程
- Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
- MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
- android从服务器下载文件(php+apache+win7+MySql)
- 【有图】android通过jdbc连接mysql(附文件)
- android分页查询获取系统联系人信息
- Android入门教程(三十一)------SQLite分页读取
- android ListView的分段显示、分页显示(附源码)
- android左右滑动加载分页以及动态加载数据