oracle中rownum的应用
2015-06-15 20:48
591 查看
rownum是根据查询结果生成的逻辑编号,是先有结果集然后追加的一个列,所以是一个伪列。
经常用rownum对查询结果进行排序:
select rownum ,u.*from p_student u where rownum<10 order by u.user_id desc;
如我们所愿的获取到前十行的数据。
但是当我们想当然的想去获取大于10 的数据,就会不自然的这样去实现:
select rownum ,u.*from p_student u where rownum>10 order by u.user_id desc;
得到的结果却为空。
因为rownum是对结果集添加的一个序列,是从1开始,所以选中的结果集必须有1,rownum >10 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。
想要获取 rownum >10 的数据,需要通过嵌套语句,先生成rownum列,然后再进行排序
select *
from (select rownum rn ,u.*from p_student u where rownum<10)
where rn >10;
查找2到10范围内的记录(这里包括2和10的记录)
select *
from (select rownum rn ,u.*from p_student u where rownum<10)
where rn between 2 and 10;
经常用rownum对查询结果进行排序:
select rownum ,u.*from p_student u where rownum<10 order by u.user_id desc;
如我们所愿的获取到前十行的数据。
但是当我们想当然的想去获取大于10 的数据,就会不自然的这样去实现:
select rownum ,u.*from p_student u where rownum>10 order by u.user_id desc;
得到的结果却为空。
因为rownum是对结果集添加的一个序列,是从1开始,所以选中的结果集必须有1,rownum >10 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。
想要获取 rownum >10 的数据,需要通过嵌套语句,先生成rownum列,然后再进行排序
select *
from (select rownum rn ,u.*from p_student u where rownum<10)
where rn >10;
查找2到10范围内的记录(这里包括2和10的记录)
select *
from (select rownum rn ,u.*from p_student u where rownum<10)
where rn between 2 and 10;
相关文章推荐
- Oracle R12采购接收流程(PR-PO-RCV-AP-Payment)
- oracle中rowid的用法 (全面)
- ado.net连接oracle
- oracle中rowid解决数据重复的问题
- c++使用occi 与oracle交互
- oracle数据库安装与navicat的连接
- Oracle创建表空间、创建用户以及授权
- Oracle数据库之PL/SQL游标
- Oracle连接问题
- oracle系统包——dbms_alert用法
- oracle 查询表及字段结构
- oracle数据库cpu使用率高
- oracle数据库中的number数据,在映射成javaBean时,数据类型为BigDecimal
- oracle闪回表详解
- 查询最近oracle更改的数据 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE
- ORACLE日期时间函数大全
- ORACLE数据库汉字占几个字节问题
- oracle创建表空间
- Oracle 查询表结构
- Oracle 11g数据库详细安装步骤图解