分页查询数据不准确问题分析
mysql和Oracle对字段相同值排序后再分页数据会不准确。
举个简单的例子,数据表t如下:
A | B |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 2 |
7 | 2 |
8 | 2 |
进行下一页查询时
select A,B from t order by B limit 0,2;
结果如下:
A | B |
---|---|
1 | 1 |
8 | 2 |
再进行下一页查询
select A,B from t order by B limit 2,2;
结果如下
A | B |
---|---|
3 | 2 |
8 | 2 |
可以看出分页结果出错了。
解决方案:
看一下表中,是否有唯一的列,将这个列也加入到排序中
这里可以将sql调整成
select A,B from t order by B,A limit 0,2;
MySQL分页
select A,B from t order by B,A limit ?,?;
#第几页pageNum,pageSize每页显示多少条记录
#参数1:pageNum - 1
#参数2:pageSize
Oracle分页
String sql = "select A,B from t order by B,A";
sql = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (" + sql + ") A WHERE ROWNUM <=?) B WHERE RN >?";
#第几页pageNum,pageSize每页显示多少条记录
#参数1:pageNum * pageSize
#参数2:(pageNum - 1) * pageSize
参考:
mysql进行分页查询数据不准确问题分析_不记恩仇的博客-CSDN博客
还没有评论,来说两句吧...