Oracle中rownum的使用
来源:互联网 发布:软件界面翻译官 编辑:程序博客网 时间:2024/06/06 18:45
首先,我们需要了解一下ROWNUM的定义:
ROWNUM是对结果集的编序排列,始终是从1开始。实际上ROWNUM并不是一个实际存在的列,所以我们平时对列进行的操作无法完全套用到上面。注意:ROWNUM的查询只能从1开始!
在做一个项目时遇到了ROWNUM的问题。当时是需要获取一张表中的数据,支持排序和分页。
举个例子:有一张STUDENT表,其中有STUDENTNUM(学生编号)、STUDENTNAME(学生姓名)、SEX(学生性别)、AGE(学生年龄)。
需求:获取表中20岁以下的学生的信息并且以年龄进行排序(从小到大),每页只展示10条数据。
语句如下:SELECT * FROM (SELECT ROWNUM RN,a.* FROM (SELECT * FROMSTUDENT WHERE AGE <=20 ORDER BYAGE) a ) b WHERE RN BETWEEN 1 AND 10
现在我们来分析下这条sql语句:
首先,a表,即(SELECT * FROM STUDENT WHERE AGE <=20 ORDER BY AGE) 这条语句查出的内容为年龄为20岁以下的信息。这时我们其实已经取出需要的数据集合了,但是我们需要对其进行分页获取。就需要用到ROWNUM。
然后,b表,因为a表内的ROWNUM其实是STUDENT表的默认排序列,所以我们不能在表a中直接使用ROWNUM。而我们需要的是a表数据结果的ROWNUM,所以我们用表b来进行包裹表a,此时表b的ROWNUM才是我们所要用的。
最后,为什么我们需要在表b中将ROWNUM查询出来并作为新的列来进行操作。这是因为ROWNUM的查询只能从1开始,如果我们使用WHERE ROWNUM BETWEEN 11 AND 20,这样的话,我们什么也查询不出来。
如果感觉有点理解不了,可以试下下面这条语句:
SELECT ROWNUM RN2,a.* FROM (SELECTROWNUM RN1,s.* FROM STUDENT s WHERE AGE <=20 ORDER BY AGE) a
可以看下RN1和RN2是否一致,关于ROWNUM只能从1开始查询也可以试一试。
新手一枚,如果有写的不好的地方,望见谅。如果有不理解的,可以留言。
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中ROWNUM的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧。
- Oracle中 ROWNUM 的使用心得
- 关于oracle中rownum的使用探讨
- Oracle中ROWNUM的使用技巧
- Oracle 中rownum 和 rowid 的使用
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧
- Oracle中rowid与rownum的使用
- POJ 3300 Tour de France 再想想
- 渲染树构建、布局及绘制
- iOS MJRefresh简单刷新
- LBS地理位置距离计算方法之geohash算法
- CSS基础知识
- Oracle中rownum的使用
- java的ssm框架整合详细步骤,复制粘贴,直接可用(初级)
- shiro管理下MD5加密的使用
- Mongo操作教程之PHP扩展
- 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理简介补充附带工具-2
- 如何看jar 里面的内容
- 蓝桥杯 历届试题 大臣的旅费
- Android学习笔记
- Visual Studio 2015 开发环境 帮助文档 安装 配置