日期:2014-05-17  浏览次数:21235 次

多表的分页查询语句,rownum会混乱的问题
情况是这样的,现在需要一个在oracle下面的分页查询语句,他涉及两张表
我用了最普通的rownum的方法来实现,效果是有了,但是发现他顺序不确定

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

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

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

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

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

请问各位高手有木有方法在多表查询下rownum按照排序来
现在我只有在多表查询时先用子查询排序好再产生rownum是可以,但是效率低啊,请问各位大神有木有其他方法
Oracle 多表查询 分页

------解决方案--------------------
先结合完,然后外面套一层
SELECT ROWNUM AS RN,* FROM (结合部分)
不好吗?
------解决方案--------------------
Oracle分页自古如此。
不用谈SQL效率高低,你需要对全表排序,取出其中固定位置的若干条,你写数据库,能给个效率不低的实现方法吗?