oracle分页语句

分页语句:

select z.* from(select x.*,rownum members from reg_user x where rownum<=10) z where z.members>0

 

 

1 获取总页数

 

Sql代码  01.SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)  02.AS  pages FROM XZQH    其中XZQH是表名,可以换成别的表格或者与别的表格相连或者加上查询条件....总之可以把XZQH换成FROM后的一切东西.

 

100是每页显示的记录数,换成你想要的!!!

 

生成结果是具有pages列的一个表格.可以用resultSet.getInt("pages")获得

 

2 获取特定的记录数据

 

Sql代码  1.SELECT x.* from (  2.     SELECT z.*,rownum numbers from(  3.          select * from XZQH where XXX order by XXX) z  4.     where rownum<101) x   5.where x.numbers>90   

 

或者: Sql代码   1.SELECT x.* from (SELECT z.*,rownum numbers from XZQH z where rownum<101) x 2.     where x.numbers>90 

 

其中XZQH的含义与上述一样,可以换成你任何想要的条件和表连接 其中101和90是指定界限的数字,拿此例来说,是取出第90-----100条数据.

 

 

 

也可以直接用分析函数

 

Sql代码  01.SELECT X.*   02.FROM (  03.    SELECT   04.          ROW_NUMBER() OVER(order by XXX) AS numbers  05.        , XZQH.*  06.    FROM XZQH  07.    WHERE XXX  08.) X  09.WHERE X.numbers < 101   10.    AND X.numbers > 90  11.

 

不用分析函数你这个到1万条以后翻页很慢,用分析函数最后一页很慢。用哪种方式要看系统需求了,如果大多数情况下只是浏览前面的数据,就加hint first_row

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。