表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请问要怎样才能得到我要的结果
姓名 年龄 分数
张三 12 50
李四 10 90
王五 15 10
张平 10 70以分数排序
结果要求每次显示二条
-------------------------------第一次显示
姓名 年龄 分数
李四 10 90
张平 10 70
---------------
第二页显示
姓名 年龄 分数
张三 12 50
王五 15 10
但我的得到的结果是:
-------------------
第一次显示
姓名 年龄 分数
张三 12 50
李四 10 90第二页显示
姓名 年龄 分数
王五 15 10
张平 10 70请问要怎样才能得到我要的结果
--符合需要的子查询
) row_ WHERE rownum <= ? ) WHERE start_rownum_ >= ?
from ( select row_num() over(order by 分数 desc) rn, 姓名, 年龄, 分数
from 表1 ) t
where t.rn > (&页码 - 1) * &每页行数
and t.rn <= &页码 * &每页行数
select t.姓名,年龄,分数
from ( select row_number() over(order by 分数 desc) rn, 姓名, 年龄, 分数
from 表1 ) t
where t.rn > (&页码 - 1) * &每页行数
and t.rn <= &页码 * &每页行数
select t.姓名,t.年龄,t.分数 from (select rownum as NewRownum,姓名,年龄,分数 from
表1order by 分数 desc) t where t.NewRownum>1 and t.NewRownum<1+2,但我觉得还是不够好,因为如果数据量太大时,每次查询都要整个表查一次,太慢了,如果有索引会快好多,但数据量大到上亿条时,这语句就没法执行了,因为我公司的数据量就会大于1亿条.请问各位大侠有没有更好的办法.
select 姓名,年龄,分数 from 表1 order by 分数,rowId desc
) row_ WHERE rownum <= ? ) WHERE start_rownum_ >= ?
但是上亿条,光一个order by 就完蛋了吧~~