你好,游客 登录 注册
背景:
阅读新闻

Oracle中order by造成分页错误

[日期:2019-04-30] 来源:Linux社区  作者:songzhen [字体: ]

问题:今天在工作中,在service中调用分页查询列表接口的时候,返回的到页面的数据中总是存在缺失的数据,还有重复的数据。

分析:select * from (select ROWNUM rn,t.* from (select * from student order by class) t where ROWNUM <![CDATA[<]]>#{1.endIndex}) where rn <![CDATA[>=]]>#{1.startIndex}

当endIndex为3和为5的时候ROWNUM发生了变化

id

student

class

rownum

1

zhao

2

1

2

qian

2

2

3

li

2

3

 

id

stuent

class

rownum

1

zhao

2

1

3

li

2

2

4

song

2

3

2

qian

2

4

5

yang

2

5

在上表中qian 和li 的rownum发生了变化

总结:Oracle分页语句中:

1 不存在order by 则系统根据rowid来排序

2 若存在order by 则order by 后面的限制的列必须要能确定唯一,或者最小粒度的列能确定唯一(如id列)如上class都相同,则可以加上

order by class,id  或者  order by class,rowid

更多Oracle相关信息见Oracle 专题页面 https://www.91linux.com/topicnews.aspx?tid=12

Linux开源中文网的RSS地址https://www.91linux.com/rssFeed.aspx

本文永久更新链接地址https://www.91linux.com/Linux/2019-04/158392.htm

linux
相关资讯       oracle order by 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款