之前项目上遇到一个bug
在分页查询上,其中几页数据会保持一样。
这主要是分页rownum的坑。参考:https://blog.csdn.net/zhiren201207/article/details/62238100
解决方法:
select *
from ( select /*+ FIRST_ROWS(n) */
a.*, ROWNUM rnum
from ( your_query_goes_here,
with order by ) a
where ROWNUM <=
:MAX_ROW_TO_FETCH )
where rnum >= :MIN_ROW_TO_FETCH;
使用此分页查询的一个重要事项是ORDER BY语句应按唯一的顺序排序。如果内容不是唯一的,那么应该在ORDER BY 的末尾添加一些内容来实现它。例如,如果您按某一列排序100条记录,并且它们都具有相同的值,那么指定第20行 到第25行实际上没有任何意义。
详细请看:http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html