您的位置:首页 > 数据库 > Oracle

Oracle中实现分页的sql语句

2011-09-13 12:04 549 查看
写了两个有关分页的SQL 语句,希望对大家有点帮助...记住,只能在Oracle下使用

1 获取总页数

Sql代码



SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)

AS pages FROM XZQH

其中XZQH是表名,可以换成别的表格或者与别的表格相连或者加上查询条件....总之可以把XZQH换成FROM后的一切东西.

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

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

2 获取特定的记录数据

Sql代码



SELECT x.* from (

SELECT z.*,rownum numbers from(

select * from XZQH where XXX order by XXX) z

where rownum<101) x

where x.numbers>90

或者:



Sql代码



SELECT x.* from (SELECT z.*,rownum numbers from XZQH z where rownum<101) x

where x.numbers>90

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

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

也可以直接用分析函数

Sql代码



SELECT X.*

FROM (

SELECT

ROW_NUMBER() OVER(order by XXX) AS numbers

, XZQH.*

FROM XZQH

WHERE XXX

) X

WHERE X.numbers < 101

AND X.numbers > 90

不用分析函数你这个到1万条以后翻页很慢,用分析函数最后一页很慢。用哪种方式要看系统需求了,如果大多数情况下只是浏览前面的数据,就加hint first_row
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: