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

Oracle中,对如何对排序后的结果进行分页显示
表1
姓名   年龄  分数
张三    12   50
李四    10   90
王五    15   10
张平    10   70

以分数排序
结果要求每次显示二条
-------------------------------

第一次显示
姓名   年龄  分数
李四    10   90
张平    10   70
---------------
第二页显示
姓名   年龄  分数
张三    12   50
王五    15   10


但我的得到的结果是:
-------------------
第一次显示
姓名   年龄  分数
张三    12   50
李四    10   90

第二页显示
姓名   年龄  分数
王五    15   10
张平    10   70

请问要怎样才能得到我要的结果

------解决方案--------------------
应该是需要使用rownum伪列
------解决方案--------------------
我想lz的分页用的就是rownum的方法,只是子查询的order by 有问题!!order by 一定要order by unique的column,没有的话,就加个rowid字段

SELECT * FROM (select row_.*, rownum start_rownum_ from (
--符合需要的子查询
) row_ WHERE rownum <= ? ) WHERE start_rownum_ > = ?
------解决方案--------------------
错了,是
select t.姓名,年龄,分数
from ( select row_number() over(order by 分数 desc) rn, 姓名, 年龄, 分数
from 表1 ) t
where t.rn > (&页码 - 1) * &每页行数
and t.rn <= &页码 * &每页行数