ORCLE之ROWNUM用法
来源:互联网 发布:网络金融销售是干嘛的 编辑:程序博客网 时间:2024/05/22 04:26
在oracle中的rownum作为行号 在分页处理方面有着很大的便利
但是在操作rownum时,总会出一些很奇怪的结果 接下来就来针对rownum的性质来进行讲解
举一个例子
一个表共40条数据 ,想要取出前20条数据 会这么写 SELECT * FROM T_USER WHERE ROWNUM <=20 结果也是正确的
但要是想取出这个表的后20条数据,那么用 SELECT * FROM T_USER WHERE ROWNUM >=20 结果就是为空
这就令人感到费解 明明数据表中是有数据的 数据量也大于20条 为什么得到的结果集怎么是空呢
究其原因,还是因为rownum是这个结果集的伪列 是得到结果集后加上的(需要先有结果集) rownum是一个序列,从oracle数据库从数据文件或者缓存中读取数据的顺序
这样说还是有点抽象 简单的来说就是当结果集被查询出来之后 加上rownum开始进行判断 当rownum=1不符合条件时,就会去掉rownum=1的那条,那么rownum=2的就会变成rownum=1的,那么一直不满足一直去除 最后结果集中就没有了数据
那么以下现象就变的正常了
1.SELECT * FROM T_USER WHERE ROWNUM >1没有数据,SELECT * FROM T_USER WHERE ROWNUM >=1可以查出所有数据
那是因为ROWNUM >1的情况,会进入一直去掉第一条的情况 导致所有结果集被去除掉
2.SELECT * FROM T_USER WHERE ROWNUM !=10会取到前9条,而不是40-1=39条
这因为当rownum=10时,条件不满足后一直去除结果集的内容 导致只有9条数据
3.为什么 between 1 and 10 或者 between 0 and 10 能查到结果,而用 between 2 and 10 却得不到结果
原因同上一样这是因为 rownum 总是从 1 开始
根据以上原因,程序中的分页一般采用查询生成rownum列 然后嵌套进行分页查询
SELECT*FROM(SELECTrt.*, ROWNUM row_numFROM(SELECT USERID,OPERATORNAME FROM sys_user) rtWHEREROWNUM <= 60) stWHEREst.row_num >= 21
- ORCLE之ROWNUM用法
- orcle之instr函数的用法
- rownum 用法
- rownum用法
- orcle函数常见用法
- 学习笔记之orcle
- orcle
- ORCLE
- 关于rownum 的用法
- oracle rownum 用法
- oracle rownum 用法
- oracle rownum 用法
- oracle rownum 用法
- Oracle rownum的用法
- Oracle rownum的用法
- rownum的用法
- rownum用法详解
- Oracle rownum 用法
- 十一月六日课堂笔记
- Easypack容器系列之:Nexus 3:NPM私库
- 对象和引用对象的区别 JAVA
- scikit-learn一些常用算法
- mybatis-主键返回
- ORCLE之ROWNUM用法
- [kuangbin带你飞]专题九 连通图 F
- Unity 游戏框架搭建 (四) 简易有限状态机
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
- CentOS 7.X配置连接网络
- 大数据、人工智能、机器人,有什么血缘关系?
- Linux实际内存使用计算
- 05 rest-framework之用户认证和权限管理
- jqGrid简单使用、json格式和jsonReader介绍