日期:2014-05-16  浏览次数:20536 次

关于ORACLE排序后分页查询出现重复数据的探讨

??? 最近在帮一个同事调试BUG,有一个条BUG是这样描述的: 所有有排序功能的列表,当其中某一字段当前页面内容一致时,翻页就有误。 页码改变,列表内容不变。

看到这个BUG第一反应是查看翻页的SQL语句。调试后找到SQL语句为:

SELECT * FROM
(
SELECT BIZ.*,ROWNUM RN FROM
(SELECT * FROM WIKI_BIZ B WHERE B.BIZ_SYNC_TYPE < 3 ORDER BY B.BIZ_VIEW_COUNT ASC) BIZ
WHERE ROWNUM <= 20
)WHERE RN >=11;
SELECT * FROM
(
SELECT BIZ.*,ROWNUM RN FROM
(SELECT * FROM WIKI_BIZ B WHERE B.BIZ_SYNC_TYPE < 3 ORDER BY B.BIZ_VIEW_COUNT ASC) BIZ
WHERE ROWNUM <= 30
)WHERE RN >=21;
?

?? 查询后的结果为:

<

BIZ_ID BIZ_SYNC_CODE BIZ_SYNC_NAME BIZ_SYNC_TYPE BIZ_SYNC_TIME BIZ_SYNC_FROM BIZ_VIEW_COUNT