`
wangfeizy
  • 浏览: 13646 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ORACLE查询结果分页

阅读更多

以ORACLE 10g来说,常用的分页方式有两种:

 

1、使用ROW_NUM关键字。对每一个查询结果此关键字返回一个数值型的伪列,此伪列标识了查询结果中每一行的顺序。毫无疑问,这正是我们分页时需要的,此关键字的使用方式如下:

SELECT ROWNUM, A.* FROM TableX A
 

如果我们需要分页,那么先在程序中计算出需要的行数范围。例如每页显示10行,现在浏览第2页,就是要查询11行至20行的内容,那么只需见做一个子查询就OK,如下:

SELECT * FROM
(
  SELECT ROWNUM AS RN, A.* FROM TableX A
)
WHERE RN BETWEEN 10 AND 20
 

使用此方式分页有个局限性。如果当需要对结果进行排序,然后按新的顺序分页显示时就不方便。

比如如下的方式就不可行:

SELECT * FROM
(
  SELECT ROWNUM AS RN, A.* FROM TableX A
  WHERE ORDER BY COL1,COL2,COL3
)
WHERE RN BETWEEN 10 AND 20
 

因为此方式会先将行的序号列出来后,再对结果排序,这样在新的结果集中行序号顺序就是混乱的。对于此种情况我们需要多来几个子查询,如下:

SELECT * FROM
(
  SELECT ROWNUM AS RN,A.* FROM
  (
    SELECT * FROM TableX
    ORDER BY COL1,COL2,COL3
  ) A
)
WHERE RN BETWEEN 10 AND 20

 

显然这种方式嵌套查询太多。如果需要排序的话,建议采用下面的第二种方式。

 

2、使用ROW_NUMBER()函数。此函数提供了一个排序的方法,使用方法如下:

SELECT ROW_NUMBER() OVER (ORDER BY COL1,COL2,COL3) AS RN, A.*
FROM TableX A
 

完整的分页语句如下:

SELECT * FROM
(
  SELECT ROW_NUMBER() OVER (ORDER BY COL1,COL2,COL3) AS RN, A.*
  FROM TableX A
)
WHERE RN BETWEEN 10 AND 20
 

需要排序时建议使用此方式。

 

转载请注明出处:http://wangfeizy.iteye.com/blog/1725992

分享到:
评论

相关推荐

    Oracle&JSP分页和Oracle分页

    然后,表单提交到Servlet,Servlet处理请求,执行分页查询,并将结果传递回JSP页面。 在Servlet中,你可以使用PreparedStatement来执行带参数的SQL查询,这样可以防止SQL注入攻击。例如: ```java String sql = ...

    Oracle的SQL分页实践

    首先,我们要了解Oracle中的基本分页查询方式。在Oracle 9i及更高版本中,可以使用ROWNUM伪列进行分页。ROWNUM是在查询结果集生成时被赋予的数值,表示行的顺序。例如,如果我们想要获取前10条记录,可以使用以下...

    java web与Oracle数据的分页功能

    2. **构造SQL查询语句**:Oracle数据库支持使用`ROWNUM`进行分页查询。基本的SQL模板为: ```sql SELECT * FROM (SELECT t.*, ROWNUM rnum FROM (YOUR_SELECT_QUERY) t WHERE ROWNUM ) WHERE rnum >= :startRow `...

    Oracle的分页查询语句 Oracle分页的存储过程

    Oracle数据库在处理大数据量查询时,分页查询是一种常见的优化策略,目的是限制返回结果集的大小,加快查询速度,提供更好的用户体验。本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询...

    oracle的分页查询

    本文将讲解 Oracle 中的分页查询,包括使用 ROWNUM 伪列和 ORDER BY 子句对查询结果进行排序和分页。 一、使用 ROWNUM 伪列实现分页查询 在 Oracle 中,ROWNUP 伪列是一个特殊的列,可以用来实现分页查询。例如,...

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    ORACLE分页查询效率

    根据所提供的信息,我们可以提炼出以下关于“ORACLE分页查询效率”的相关知识点: ### 一、Oracle中的分页查询 #### 1.1 分页查询的重要性 - **背景介绍**:在实际应用中,数据库查询结果往往非常庞大,一次性加载...

    oracle分页查询sql

    这种方法告诉Oracle优先处理前面的几条记录,适用于那些只需要快速获取分页查询结果的应用场景。 #### 七、总结 通过以上分析可以看出,在Oracle中实现高效的分页查询需要综合考虑查询结构、索引使用以及查询优化...

    韩顺平Oracle版的分页查询

    本教程以"韩顺平Oracle版的分页查询"为主题,结合MyEclipse进行Web开发,旨在教授如何在Oracle数据库中实现高效且实用的分页查询。 首先,我们需要理解Oracle中实现分页查询的基本概念。在SQL语句中,通常使用`...

    Oracle 存储过程分页

    Oracle 提供了多种方法实现分页查询,下面我们将详细探讨Oracle存储过程中的分页实现。 1. **ROWNUM伪列** 在早期的Oracle版本中,ROWNUM伪列被广泛用于分页。ROWNUM是在结果集生成时自动分配的,表示每一行的顺序...

    Oracle分页查询(很不错的介绍)

    首先,理解Oracle分页查询的基本结构。通常,Oracle的分页查询采用嵌套查询的方式实现。以下是一个典型的分页查询模板: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A ...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Oracle数据库中很实用的分页查询代码

    分页查询是Oracle数据库比较重要的一个知识点!希望这个对你有参照作用。

    Oracle-C#分页控件

    BindingSource的DataSource属性设置为查询结果,DataGridViev的DataSource则设置为BindingSource,这样就可以实现数据的动态更新。 除了ROWNUM,Oracle还提供了其他高级的分页方法,比如使用`ROW_NUMBER() OVER...

    Oracle 3种分页SQL方法比较

    本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...

    oracle分页查询

    Oracle 分页查询详解 Oracle 分页查询是指从大型数据表中提取指定范围的记录,以便提高查询效率和减少数据传输量。常用的 Oracle 分页查询方法有三种:使用 ROWNUM、使用 ROW_NUMBER() 和使用子查询。 第一种方法...

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    Oracle JDBC分页实现是数据库操作中的一个重要环节,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页查询显得尤为重要。Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标...

    Oracle存储过程分页

    在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行分页更加灵活且易于维护。 #### 二、存储过程分页的优势 1. **提高性能**:存储过程...

    基于mybatis-generate 的Oracle数据库的分页生成插件

    mybatis 分页 mybatis-generate Oracle数据库 大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 ...

    如何解决Oracle分页查询中排序与效率问题

    Oracle 分页查询是指在查询结果中,通过限制行数来实现分页的功能。常用的分页查询方法有两种:ROWNUM 和 OFFSET Fetch。ROWNUM 是 Oracle 专门用于分页查询的伪列,OFFSET Fetch 是 Oracle 12c 及更高版本中引入的...

Global site tag (gtag.js) - Google Analytics