当前位置:   article > 正文

Oracle数据库分页查询出现重复_oracle rownum 使用<=,分页出现重复数据

oracle rownum 使用<=,分页出现重复数据

常用分页语句:

  1. SELECT
  2. *
  3. FROM
  4. (
  5. SELECT
  6. A.*
  7. , ROWNUM RN
  8. FROM
  9. (SELECT * FROM TABLE_NAME) A
  10. WHERE
  11. ROWNUM <= N
  12. )
  13. WHERE
  14. RN > M

此时的查询结果Oracle没有做任何的排序等,如果存储位置发生改变,分页查询有可能引起重复数据.

一般情况都会加上自定义排序功能,如时间倒叙:

  1. SELECT
  2. *
  3. FROM
  4. (
  5. SELECT
  6. A.*
  7. , ROWNUM RN
  8. FROM
  9. (
  10. SELECT
  11. *
  12. FROM
  13. TABLE_NAME
  14. ORDER BY
  15. CREATED_TIME DESC
  16. ) A
  17. WHERE
  18. ROWNUM <= N
  19. )
  20. WHERE
  21. RN > M

此时如果时间列一模一样,则出现分页数据显示重复的数据.

加上唯一主键排序:

ORDER BY CREATED_TIME DESC,ID

解决办法:

①sql语句中要有排序

②排序列如果没有唯一性,则后面跟上唯一列,如:主键

两个条件必须同时满足

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/475353
推荐阅读
相关标签
  

闽ICP备14008679号