Oracle中实现分页的sql语句

写了两个有关分页的SQL 语句,希望对大家有点帮助...记住,只能在Oracle下使用

1 获取总页数

Sql代码   收藏代码
  1. SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)  
  2. 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代码  收藏代码
  1. SELECT X.*   
  2. FROM (  
  3.     SELECT   
  4.           ROW_NUMBER() OVER(order by XXX) AS numbers  
  5.         , XZQH.*  
  6.     FROM XZQH  
  7.     WHERE XXX  
  8. ) X  
  9. WHERE X.numbers < 101   
  10.     AND X.numbers > 90  



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值