在网页上显示大量数据的时候,很多时候是要求按一定的顺序分页来显示.大家可能都知道用oracle中的rownum可以实现分页查询,比如:
select * from tablename where rownum<=10.
但是如果要排序的话,如下的语句:
select * from tablename where rownum<=10 order by name.
却不能达到我们想要的效果,这个语句执行结果是取了10条数据,然后排序.而不是先排序再取前10条.这样就需要我们加入子查询:
select * from (select * from tablename order by name) where rownum<10
另外rownum的使用是不允许我们用">"的,如果我要显示第二页,即10-20条数据,不能用
select * from (select * from tablename order by name) where rownum>10 and rownum<20
或
select * from (select * from tablename order by name) where rownum between 10 and 20
这样的话我们只能另想办法解决,解决方法如下:
select * from(
select rownum rowno,t.* from
(select *
from tablename
order by name) t
where rownum<6)where rowno>2;
但是这样的话也会影响到速度,各位如果有好的方法可以一起探讨下.