• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql如何查询某条记录在分页的第几页详析

    前言

    在实践中我们会遇到这样的问题,知道某条记录的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 from user order by age desc,id desc;

    此时我们知道某条id为5,age为18的记录,如何确定出此条记录在多条件排序中的位置呢。

    首先,多条件排序的难度在于age相同的情况,如果age不相同,只需如下sql即可像《根据ID查询分页位置》一样定位出id的位置:

    select count(id) from user where age > 18;

    这样就可以查询出来此组合排序age不相同时此条记录的位置,具体位置的算法同第一种情况。

    那么当age用重复的情况如何处理呢。当然,可以通过复杂的关联查询或子表查询来实现,这里通过另外一种方式,就是再查询一下age相同,并且id大于当前用户的记录条数:

    select count(id) from user where age = 18 and id > 5;

    上面获得了age相同情况下,并且id大于5的记录,将第一步和第二步的统计结果相加,问题是不是又回到了《根据ID查询分页位置》的简单模式了,还是同样的算法可以算出当前记录位于第几页了。

    此种方案虽然查询了两次数据库,如果很好的建立索引,比关联查询或子查询要方便、简洁和高效一些。

    小结

    以上是在实践中遇到类似问题的两个思考维度,希望能给大家带来一个突破,同时也希望大家提供更好的方案。

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • 浅谈mysql的子查询联合与in的效率
    • 详解Mysql多表联合查询效率分析及优化
    • 对MySQL几种联合查询的通俗解释
    • Mysql联合查询UNION和UNION ALL的使用介绍
    • Mysql联合查询UNION和Order by同时使用报错问题的解决办法
    • mysql多表联合查询返回一张表的内容实现代码
    • mysql使用from与join两表查询的区别总结
    • Mysql查询正在执行的事务以及等待锁的操作方式
    • MySQL查询中LIMIT的大offset导致性能低下浅析
    • Mysql两表联合查询的四种情况总结
    上一篇:MYSQL5.7.24安装没有data目录和my-default.ini及服务无法启动的完美解决办法
    下一篇:mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql如何查询某条记录在分页的第几页详析 Mysql,如何,查询,某条,记录,