前言

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

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

小结

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. android从服务器下载文件(php+apache+win7+MySql)
  5. 【有图】android通过jdbc连接mysql(附文件)
  6. android分页查询获取系统联系人信息
  7. Android入门教程(三十一)------SQLite分页读取
  8. android ListView的分段显示、分页显示(附源码)
  9. android左右滑动加载分页以及动态加载数据

随机推荐

  1. 使用asp.net mvc使用JsonResult返回Json
  2. 解析ADO.NET对SQL Server数据库执行增删
  3. 验证码类在asp.net mvc中的使用
  4. 在asp.net中使用JQuery Ajax相关用法总结
  5. 分析.NET的异常处理
  6. 介绍ASP.NET中的MVC如何从控制器传递数据
  7. 如何使用asp.net实现文件和文件夹的复制
  8. 详解ASP.NET中连接数据库配置方法
  9. asp.net利用ashx实现验证码功能详解
  10. 在ASP.NET中实现DES加密与解密MD5加密功