多表的分页查询语句,rownum会混乱的问题

yyl8781697 宁波大学 其他  2013-07-18 04:23:46
情况是这样的,现在需要一个在oracle下面的分页查询语句,他涉及两张表
我用了最普通的rownum的方法来实现,效果是有了,但是发现他顺序不确定

rownum的值并不是按照排序的值来,后来查询资料发现了这篇文章
oracle rownum排序

说了rownum的确不会按你排序的值来,因为是先记rownum,再排序,中了也提了解决方案,排序用主键/索引来做就可以了

后来试了一下,的确用主键来排序rownum可以按排序来,但是当我现在多表查询系 主键排序就无效了
查询的还是乱序
下面来看下图:

原数据时这样的,
我用了普通rownum分页之后

来看一下带rownum的图,
他没和主键或者创建时间的排序对上

请问各位高手有木有方法在多表查询下rownum按照排序来
现在我只有在多表查询时先用子查询排序好再产生rownum是可以,但是效率低啊,请问各位大神有木有其他方法
...全文
210 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
forgetsam 2013-07-19
Oracle分页自古如此。 不用谈SQL效率高低,你需要对全表排序,取出其中固定位置的若干条,你写数据库,能给个效率不低的实现方法吗?
回复
yyl8781697 2013-07-18
引用 2 楼 restbely 的回复:
先结合完,然后外面套一层 SELECT ROWNUM AS RN,* FROM (结合部分) 不好吗?
这样不是效率低吗 最坏的打算换就是这种写法了
回复
restbely 2013-07-18
先结合完,然后外面套一层 SELECT ROWNUM AS RN,* FROM (结合部分) 不好吗?
回复
yyl8781697 2013-07-18
没人吗 用rownum方式的分页查询为何一定要三层嵌套? 看到了这么一篇文章,他三层也就是再一次子查询,难道真的只有这种实现方法吗
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-07-18 04:23
社区公告
暂无公告