利用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),有具体的代码案例讲解rownum和rowid
举例介绍在oracle中rownum和rowId的不同以及使用方法
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、、!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来...
oracle 分页查询 使用ROWNUM技巧及陷阱
oracle_SQL中rowid与rownum的使用
oracle_SQL中ROWID与ROWNUM的使用 很有用哦
oracle rownum和distinct
oracle_SQL中 rowid 和rownum的使用
ORACLE 中ROWNUM用法总结 整理版本,详细明了
Oracle中rownum的使用
Oracle利用rownum查询出部分数据[归类].pdf
关于oracle的rownum关于oracle的rownum关于oracle的rownum关于oracle的rownum关于oracle的rownum
本文主要是以实例形式介绍了Oracle查询中rownum与rowid的不同之处,以及以假设的方式为例,查询条件为rownum = 2,在查询出第一条记录时的具体内容的介绍。 在查询中,我们可以注意到,类似于 select xx from ...
ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。
rownum是Oracle数据库中的一个特有关键字,返回的是一个数字代表记录的行号。这篇文章主要介绍了oracle 使用rownum的三种分页方式,需要的朋友可以参考下
oracle rowid rownum 等组成原理
oracle 数据库 rowid与rownum的使用
oracle 的rownum和咱们平时用的sqlserver的区别,其中好多的不一样!
内涵oracle rownum的详细讲解。