现在的位置: 首页 > 综合 > 正文

Oracle中实现分页的SQL语句

2018年02月02日 ⁄ 综合 ⁄ 共 1559字 ⁄ 字号 评论关闭

写了两个有关分页的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 (SELECT z.*,rownum numbers from XZQH z where rownum<101) x where x.numbers>90  

 其中XZQH的含义与上述一样,可以换成你任何想要的条件和表连接

其中101和90是指定界限的数字,拿此例来说,是取出第90-----100条数据.

好了,点到为止..具体在实践中该怎么用,大家自己慢慢琢磨吧!!!

 

时间:2008-06-14
应该是:
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    

否则你出来的结果不正确的

 
laodizhuq 写道
应该是:
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.*    
  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  

注意需要排序是使用:
ROW_NUMBER() OVER (ORDER BY field1,field2) AS rowNummber

不然不能总体排序,而是页内排序。

【上篇】
【下篇】

抱歉!评论已关闭.