oracle数据库rownum讲解,
来源:互联网 发布:淘宝网价格 编辑:程序博客网 时间:2024/05/14 07:47
使用的是Oracle 提供的scott用户中的表,
–找到员工表中工资最高的前三名
在mysql 里面可以使用limit很轻易的完成,但是oracle 中没有limit关键字,所以分页查询会比较麻烦,所以我们需要使用oracle 提供的rownum, 伪列 ,表中是没有的,是oracle 自带的,
然后根据以上的逻辑,我们使用伪劣进行判断,
那你如果你以为只要再排序一下,就可以的话,那么你就错了 .
从上图可以看到,排序后的顺序被打断了,
我们来看看oracle的执行顺序
from .. where ... group by .. having .. select ..rownum.. order byrownum 是在order by 之前执行的,也就意味着它是先算好行才排序,针对这类问题的解决手法通常是 想办法让order by在 rownum之前执行,那么问题来了,怎么让order by 先执行呢? 答案是, 使用子查询,把子查询放在from 后面,那么就会第一个查询,好了,看代码select rownum,e.* //最后执行 from (select * from emp order by sal desc) e; //该行优先执行
通过上图我们可以发现,我们的思路是正确的,那么我们就顺水推舟,一口气写完
答案正确,证明我们的思路是没问题的,
那么我们改需求,查询5 - 10 条数据
为什么呢?
看我们下面的分析 ,
如果没有输出数据,rownum是不会增加的,所以条件永远不会满足,针对于这种方法,解决方案是 使用子查询先查询 10条数据,然后再取5-10行,
--先查询10行的数据select rownum, e.* from (select * from emp order by sal desc) e where rownum < 10;--然后把这十行当成一个表,在表里面拿5-10行的数据 select m2.* from (select rownum line, e.* from (select * from emp order by sal desc) e where rownum <= 10) m2 where line > 5 and line <= 10;需要注意的是,如果rownum没有重命名的话,会报错的,应该是键重合了,
查询结果如下
结论:
ruwnum 查询的时候只能使用< <= 等符号,不能使用 > 的符号,>= 很多情况下都不能使用,建议不要使用 >= 符号,
阅读全文
0 0
- 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数据库的ROWID与ROWNUM
- Oracle数据库中行数的表达rownum
- Oracle数据库的CONNECT BY ROWNUM研究
- oracle数据库中伪列rownum\rowid的使用
- oracle(rownum)
- poj 2253
- pandas中apply的使用方法
- HDOJ2178 猜数字
- layer类与scene类的区别?
- 最长公共子序列
- oracle数据库rownum讲解,
- 多项式轨迹--三次多项式轨迹
- 堆排序
- OOD架构设计模式中MVC与ECB
- Dynamic Routing Between Capsules学习资料总结
- 使用pyinstaller将python开发的youtube下载程序打包成exe
- 【嵌入式学习历程8】数据结构之链表
- LeetCode 39. Combination Sum && 40. Combination Sum II && 216. Combination Sum III
- mysql5.7官网直译优化和索引--mysql如何使用索引