Oracle 分页数据重复的问题
2016-12-22 10:41
363 查看
oracle分页采用三层嵌套+rownum分页时,如果有order by,就会有一个小坑,一不留神就掉进去了。
前置条件:分页脚本中存在order by
问题暴露:分页时好时坏
问题本质:order by 在相同的数据下,排序具有不确定性
解决方法:最简单的办法,习惯性在order by后面加rownum或rowid,推荐加rowid
补充:如果有分析函数的情况按照具体情况处理,不可千篇一律
搬砖:
-------------------------------------------------------
今天公司系统中的一个分页的界面出现了重复数据的问题,检查之后确认前端分页控件及后台的SQL语句都没有问题且该表也没有存在重复的数据记录。在继续分析之后发现是由于排序的字段出现大批的重复值造成的。
例如以下语句中,ORDER_COLUMN列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
[sql] view
plain copy
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可:
[sql] view
plain copy
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ,ROWID) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
参考自:http://blog.csdn.net/q710571977/article/details/42873163
前置条件:分页脚本中存在order by
问题暴露:分页时好时坏
问题本质:order by 在相同的数据下,排序具有不确定性
解决方法:最简单的办法,习惯性在order by后面加rownum或rowid,推荐加rowid
补充:如果有分析函数的情况按照具体情况处理,不可千篇一律
搬砖:
-------------------------------------------------------
今天公司系统中的一个分页的界面出现了重复数据的问题,检查之后确认前端分页控件及后台的SQL语句都没有问题且该表也没有存在重复的数据记录。在继续分析之后发现是由于排序的字段出现大批的重复值造成的。
例如以下语句中,ORDER_COLUMN列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
[sql] view
plain copy
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可:
[sql] view
plain copy
SELECT
*
FROM
( SELECT
ROW_.*,
ROWNUM ROWNUM_
FROM
( SELECT
*
FROM T
ORDER BY
ORDER_COLUMN ,ROWID) ROW_
WHERE
ROWNUM <= 10
)
WHERE
ROWNUM_ > 20
参考自:http://blog.csdn.net/q710571977/article/details/42873163
相关文章推荐
- oracle分页查询数据重复问题
- 如何解决oracle分页查询数据重复问题
- 关于 Oracle分页数据重复的问题
- 教您如何解决oracle分页查询数据重复问题
- Oracle Order By后导分页数据重复问题解决办法。
- oracle left join 分页数据重复问题
- oracle分页查询数据重复问题的解决
- oracle分页查询数据重复问题
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- oracle分页查询数据重复问题、分页排序陷阱
- oracle分页查询数据重复问题的解决
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- oracle分页数据重复问题
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- SQL分页排序的实现与分页数据重复问题——以Oracle rownum为例
- oracle分页查询数据重复问题
- oracle分页查询数据重复问题的解决
- Oracle分页查询排序数据重复问题
- oracle 分页查询数据重复问题
- android-分页加载ListView 点击Item获取对象数据及ArrayList重复及乱序问题