Oracle中实现分页的sql语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle中实现分页的sql语句 .
分类: Oracle 2011-09-13 12:04 211人阅读 评论(0) 收藏 举报
sqloracle写了两个有关分页的SQL 语句,希望对大家有点帮助...记住,只能在Oracle下使用



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


相关文档
最新文档