oracle的rownum的用法,Oracle Rownum用法
Oracle Rownum用法
Oracle提供了rownum,rownum是一个隐含的(查询结果集)字段,rownum是一个行号,从1开始。
rownum隐含字段
select rownum, a.* from emp a;
取得前5条数据
select * from emp where rownum <=5;
取得大与第5条的所有数据
select * from emp where rownum >5;
以上语句,oracle不支持,oracle只支持rownum小于或小于等于的运算, 不支持大于或大于等于的运算。
取得薪水最好的前5名
select rownum, empno, ename, sal from emp where rownum<=5 order by sal desc;
上面的结果不正确,因为采用order by不会改变rownum,rownum的值在数据插入到表中时已经形成,正确使用的方式,将排序好的数据作为一张表来使用,这样这个表的rownum是新形成的,所以可以保证它的顺序是正确的,如下:
select empno, ename, sal
from (select empno, ename, sal from emp order by sal desc)
where rownum <=5
采用rownum进行分页
分页主要是为了提高效率,一般采用数据库的机制比较多,主要从数据库表中定位记录的开始位置和结束位置,如每页两条数据:
第一页:记录1~2
第二页:记录3~4
。。。。。。。
因为rownum存在问题,所以需要采用三层的select嵌套完成分页,嵌套的目的将rownum转换成我们自己的字段,如:
select empno, ename, sal
from
(
select rownum r, empno, ename, sal
from
(
select empno, ename, sal from emp order by sal desc
)
where rownum <=5
)where r>0
通用的分页方法,使用的时候可以直接拷贝。只需要修改红色字体的部分就可以了。
select *
from
(
select rownum r, t.*
from
(
任意的SQL语句
) t
where rownum <=结尾的行号
)where r>开始的行号
oracle的rownum的用法,Oracle Rownum用法相关推荐
- Oracle rownum 用法 --使用rownum 实现获取记录
实现以下查询: (1)获取前两条的记录: (2)获取第三条到第六条的记录: 表 student ,记录数8条 (1)获取前两条的记录 直接生成 select * from student where ...
- oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...
- oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法
savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...
- oracle中%type用法,oracle中declare用法
第8 章 函数与存储过程 Oracle数据库中不仅可以使用单条语句对数据库进行 数据库中不仅可以使用单条语句对数据库进行 查操作,而且可以多条语句组成一个语句块, 增.删.改.查操作,而且可以多条语句 ...
- oracle分页的使用,oracle中分页的实现方式.rownum的使用
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- partition oracle用法,Oracle partition by 使用说明
--用法详解 0.select * from wmg_test; ---测试数据 1.select v1,v2,sum(v2) over(order by v2) as sum --按 ...
- Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解
Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp 使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...
最新文章
- 华为诺亚加法网络再升级:精度提升,可以逼近任意函数
- 15-07-15 数据库基础
- 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
- 无法连接 MKS: Login(username/password)incorrect
- ajax请求是宏任务还是微任务_微服务-如何解决链路追踪问题
- Orleans入门例子
- 160. 相交链表 golang
- HttpWebRequest类
- 深度解析PolarDB数据库并行查询技术
- mel加载一个物体不同姿态的模型实现动画效果
- 网页视频之win7下无法升级到最新的IE11
- 读书节第二日丨数据大咖来荐读,互动荐书赢好礼!
- Idea Debug多线程不进断点问题处理
- javweb音乐网站_基于jsp的音乐网站-JavaEE实现音乐网站 - java项目源码
- 【亲测】超级外链SEO工具源码,可发9600条优质外链
- python输出日历_python输出指定月份日历的方法
- 东方时尚驾校科目一网上视频快速通过方法
- ConnectBot连接Linux服务器手机端工具
- 英语学习笔记——发音篇
- win11 更新后打不开 pycharm 解决方案