Oracle Order By后导分页数据重复问题解决办法。
2015-01-19 14:42
656 查看
今天公司系统中的一个分页的界面出现了重复数据的问题,检查之后确认前端分页控件及后台的SQL语句都没有问题且该表也没有存在重复的数据记录。在继续分析之后发现是由于排序的字段出现大批的重复值造成的。
例如以下语句中,ORDER_COLUMN列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可:
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ,ROWID) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
例如以下语句中,ORDER_COLUMN列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可:
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ,ROWID) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
相关文章推荐
- 如何解决oracle分页查询数据重复问题
- oracle分页查询数据重复问题的解决
- oracle分页查询数据重复问题的解决
- oracle排序,出现页数不同数据却重复问题的原因及解决办法
- ROW_NUMBER() OVER (ORDER BY OrderConfirmTime DESC) 中, 如果OrderConfirmTime不唯一, 会造成分页中的数据重复问题.
- 教您如何解决oracle分页查询数据重复问题
- oracle分页查询数据重复问题的解决
- oracle分页查询结果集重复问题&解决方法
- 探讨PHP获取Oracle数据乱码的相关问题解决办法
- Android 下拉分页重复数据问题解决思路
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- Oracle 数据库 Record is locked by another user 问题解决办法
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解决办法
- 一个奇葩的oracle分页问题,已经知道解决办法,但是不晓得产生问题的原音~
- ORACLE分页查询出现重复记录的解决办法
- oracle分页查询数据重复问题
- Oracle修改数据时提示“record is locked by another user”的解决办法
- Oracle 数据库 Record is locked by another user 问题解决办法
- oracle分页查询从结果集取数据不稳定解决办法
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例