利用rownum分页可以参考下面的sql
select * from (select a.*, rownum rn from (select * from tb_test where name = 'XXX' order by state asc, adddate desc , rownum asc ) a where rownum <= 20 ) where rn > 0
order by 后面的rownum asc(或desc) 是必须的 否则会出现意想不到的结果。
利用rowid分页可以参考下面的sql,rowid的效率比rownum高
第一种:
select * from tb_test where rowid in ( --这里选择要查询出的字段 select rid from ( select rownum rn,rid from ( select rowid rid from tb_test WHERE name = 'XXX' ORDER BY state ASC, adddate DESC --这里进行表排序 ) where rownum <= 20 --这里是上限 ) where rn > 0 --这里是下限 ) ORDER BY state ASC, adddate DESC --这里再次排序
第二种:
select * from (select rid from (select a.rid, rownum rn from (select rowid rid from tb_test where name = 'XXX' order by state asc, adddate desc) a where rownum <= 20) where rn > 0) t1, tb_test t2 where t1.rid = t2.rowid order by state asc, adddate desc
使用rowid进行分页 在最里层 和 最外层都必须使用order by排序,此时rownum asc(或desc)不是必须的了。
参考:http://www.jianbage.com/basic/database/567.html
http://www.jianbage.com/basic/database/565.html
相关推荐
在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过示例来帮助读者更好地理解。 #### 一、...
在Oracle SQL中,`ROWID`和`ROWNUM`是两个非常重要的概念,它们在数据库查询和数据操作中起着至关重要的作用。本文将详细探讨这两个特性,包括它们的定义、用途以及如何在实际场景中有效利用它们。 一、ROWID详解 `...
本文将讲解 Oracle 中的分页查询,包括使用 ROWNUM 伪列和 ORDER BY 子句对查询结果进行排序和分页。 一、使用 ROWNUM 伪列实现分页查询 在 Oracle 中,ROWNUP 伪列是一个特殊的列,可以用来实现分页查询。例如,...
在实际开发中,理解并合理利用`ROWID`和`ROWNUM`,可以有效地提升Oracle数据库的管理和查询效率。同时,从提供的压缩文件名来看,除了`oracle_SQL中rowid与rownum的使用.doc`直接相关外,其他文件如`ssi2配置整合...
SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 可以看出,ROWNUM并不是按照NAME列来生成的序号。系统是按照记录插入时的顺序给记录排的号,ROWID也是顺序分配的。为了解决这个问题,必须使用子查询。 ...
综上所述,Oracle伪列如ROWID和ROWNUM在实际应用中发挥着重要作用,不仅可以帮助优化查询性能,还能轻松实现复杂的分页功能。同时,通过Java JDBC编程,可以进一步提升应用程序与Oracle数据库的集成度和灵活性。
在描述中提到的问题中,当使用`ORDER BY`对包含非唯一值的列进行排序,并结合分页查询时,发现不同页码的数据可能会有重复。这进一步证实了`ORDER BY`在Oracle中的不稳定特性。在没有唯一索引或主键约束的情况下,...
rowid 和 rownum 是 Oracle 数据库中的两个重要概念,对于数据库开发人员来说非常重要。下面我们将详细介绍 rowid 和 rownum 的概念、结构、应用场景等。 一、rowid 概念 rowid 是 Oracle 数据库中的一个虚列,...
Oracle数据库在处理大量数据时,为了提高查询效率和用户体验,常常需要使用分页查询。分页不仅能够有效地减少网络传输的数据量,还能让用户逐步浏览数据,提高网页加载速度。以下将详细介绍Oracle数据库中实现分页...
在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,通常需要只显示一部分数据,而不是一次性加载所有记录。本文将详细介绍Oracle中的分页查询原理及其实现方法。 首先,...
2. **ROWNUM+子查询**:为了解决ROWNUM无法实现降序分页的问题,可以结合子查询和ORDER BY来实现。 3. **DBMS_ROWID**:Oracle 9i引入了DBMS_ROWID包,可以用来获取每行的唯一行标识,辅助进行分页。 4. **Oracle ...
本文主要探讨了Oracle数据库中的三种分页方法:基于ROWNUM的分页、基于ROW_NUMBER()解析函数的分页和基于ROWID的分页。首先,我们创建了一个名为stu的测试表,包含学生的基本信息,如学号、考试号、姓名、专业、考试...
在众多的SQL操作中,分页查询是数据库管理员和开发人员频繁使用的场景之一,尤其是在处理大量数据时,有效地进行分页不仅能够提升查询性能,还能优化用户体验。以下是对分页SQL查询技术的深入解析,旨在帮助读者理解...
Oracle不直接支持`LIMIT`和`OFFSET`,但它可以通过`ROWNUM`伪列来实现分页。以下是一些常见的方式: 1. **NOT IN子查询**: ```sql SELECT * FROM a_matrix_navigation_map WHERE rowid NOT IN (SELECT rowid ...
- 排序和过滤:rownum可以在ORDER BY之后结合使用,以筛选特定行。 三、rowid的局限性和注意事项 - 兼容性:rowid是Oracle特有的,不适用于其他数据库系统,跨数据库迁移时需注意。 - 物理位置:rowid记录的数据...
Oracle数据库提供了`ROWNUM`伪列来进行分页查询,但在使用时需要注意一些细节。 #### 3. 使用`ROWNUM`伪列 - **获取指定范围的数据**(例如第2至第3条记录): ```sql SELECT ID FROM ( SELECT ID, ROWNUM AS ...
select * from (select 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, rownumber() over(order by 排序字段 asc) as rowid from 表名) as a where a.rowid >= startPage AND a.rowid ; ``` 其中,startPage 是计算出的...
这篇笔记主要探讨了Oracle中的两个重要概念——伪列(Rownum和Rowid),以及如何使用子查询进行复杂的数据操作。 首先,伪列是Oracle数据库中一种特殊类型的列,它们并不实际存在于表的结构中,但可以通过SQL查询来...
- 结合ROWNUM和ROWID对数据进行分页。 - 通过子查询与`IN`关键字来限定数据的范围,实现分页效果。 ### 3. 使用存储过程和函数进行数据操作 #### 3.1 使用REFCursor返回数据集 - REFCursor是Oracle提供的一个游标...