Oracle02-rownum伪列与分页
来源:互联网 发布:三星s7edge主题软件 编辑:程序博客网 时间:2024/06/05 09:04
伪列:rownum摘自百度百科:
数据库术语,指的是在物理上这个列并不存在,只是在查询时才构造出来。伪列通常是自由分配的,用户无法执行修改等操作。比如Oracle中的RowID字段,使用RowID可以快速地定位到某个对应的数据,因为它标记了记录所对应的物理地址,是唯一的。RowNum,Level也是Oracle中常见的伪列。
参考总结:
伪列,rownum其实是对结果集加了一个伪序列,先查到结果集之后,再加上一个物理上并不存在的列,是每一次符合条件结果集的重新编号。总是从1开始,所以你通过(>,>=,between...and..)rownum得到的,不能没有1,而是从其他的值开始的。
例如:select 之后得到一个结果集,rownum,对这个结果集,从1开始编号。
你要求 : select rownum,id from(select *from test order by id) where rownum >= 1 and rownum<=4;是可以的,从一开始。
但是如果: select rownum,id from(select *from test order by id) where rownum >= 2 and rownum<=4;就会出错,当order id 之后,结果集第一个,伪列rownum=1,不满足条件,去掉;第二个,rownum还会是1(不会变成2),所以最后没有一行选中。
解决办法:
依旧子查询,通过rownum伪列命名一个别名,通过别名限定。
select rn,id from (select rownum as rn ,id from (select * from test order by id)) where rn>=2 and rn<=4;
两个子查询:第一个,排序,得到正确的顺序,并通过伪列编号。
第二个,定义别名,将伪列编号,限定数据。
常用的两个分页方法:
1、高效。
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 212、
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) WHERE RN BETWEEN 21 AND 40
- Oracle02-rownum伪列与分页
- oracle分页(使用rownum[伪列])
- Oracle 伪列: ROWNUM 应用与总结
- 伪列rownum
- 使用伪列Rownum
- Oracle rownum 伪列
- 伪列 rownum(重点)
- ROWNUM伪列:
- oracle伪列rownum
- Oracle伪列rownum
- Oracle伪列rownum
- Oracle-伪列(rownum)
- 立此存照(2)Oracle中的伪列ROWNUM与ROWID
- oracle中的伪列rownum
- Oracle Rownum 伪列详解
- rownum 伪列的用法
- oracle中的伪列rownum
- Oracle Rownum 伪列详解
- 给定一个字符串,求这个字符串的最大回文数
- 判断一个正整数是不是质数
- java中static{}语句块详解
- 项目中关于webservice和ice的运用
- HQL 查询语句
- Oracle02-rownum伪列与分页
- Light Bulb
- POJ 1088 滑雪
- CF 401B Sereja and Contests
- [HBase] ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
- javascript与JQuery的this关键字
- 三步升级已安装的 Android SDK 和 ADT 插件
- 魔幻矩阵全解(有全部代码说明)
- 效果器的使用技巧-与调音台的无缝连接