分页查询数据不准确问题分析

超、凢脫俗 2023-10-06 22:49 97阅读 0赞

mysql和Oracle对字段相同值排序后再分页数据会不准确

举个简单的例子,数据表t如下:










































A B
1 1
2 2
3 3
4 4
5 5
6 2
7 2
8 2

进行下一页查询时

  1. select A,B from t order by B limit 0,2;

结果如下:


















A B
1 1
8 2

再进行下一页查询

  1. select A,B from t order by B limit 2,2;

结果如下


















A B
3 2
8 2

可以看出分页结果出错了。

解决方案:

看一下表中,是否有唯一的列,将这个列也加入到排序中

这里可以将sql调整成

  1. select A,B from t order by B,A limit 0,2;

MySQL分页

  1. select A,B from t order by B,A limit ?,?;
  2. #第几页pageNum,pageSize每页显示多少条记录
  3. #参数1:pageNum - 1
  4. #参数2:pageSize

Oracle分页

  1. String sql = "select A,B from t order by B,A";
  2. sql = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (" + sql + ") A WHERE ROWNUM <=?) B WHERE RN >?";
  3. #第几页pageNum,pageSize每页显示多少条记录
  4. #参数1:pageNum * pageSize
  5. #参数2:(pageNum - 1) * pageSize

参考:

mysql进行分页查询数据不准确问题分析_不记恩仇的博客-CSDN博客

发表评论

表情:
评论列表 (有 0 条评论,97人围观)

还没有评论,来说两句吧...

相关阅读