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用法相关推荐

  1. Oracle rownum 用法 --使用rownum 实现获取记录

    实现以下查询: (1)获取前两条的记录: (2)获取第三条到第六条的记录: 表 student ,记录数8条 (1)获取前两条的记录 直接生成 select * from student where ...

  2. oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  3. oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法

    savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...

  4. oracle中%type用法,oracle中declare用法

    第8 章 函数与存储过程 Oracle数据库中不仅可以使用单条语句对数据库进行 数据库中不仅可以使用单条语句对数据库进行 查操作,而且可以多条语句组成一个语句块, 增.删.改.查操作,而且可以多条语句 ...

  5. oracle分页的使用,oracle中分页的实现方式.rownum的使用

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...

  6. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  7. partition oracle用法,Oracle partition by 使用说明

    --用法详解 0.select * from wmg_test;     ---测试数据 1.select v1,v2,sum(v2) over(order by v2) as sum     --按 ...

  8. Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解

    Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...

  9. ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)

    标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...

最新文章

  1. 华为诺亚加法网络再升级:精度提升,可以逼近任意函数
  2. 15-07-15 数据库基础
  3. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
  4. 无法连接 MKS: Login(username/password)incorrect
  5. ajax请求是宏任务还是微任务_微服务-如何解决链路追踪问题
  6. Orleans入门例子
  7. 160. 相交链表 golang
  8. HttpWebRequest类
  9. 深度解析PolarDB数据库并行查询技术
  10. mel加载一个物体不同姿态的模型实现动画效果
  11. 网页视频之win7下无法升级到最新的IE11
  12. 读书节第二日丨数据大咖来荐读,互动荐书赢好礼!
  13. Idea Debug多线程不进断点问题处理
  14. javweb音乐网站_基于jsp的音乐网站-JavaEE实现音乐网站 - java项目源码
  15. 【亲测】超级外链SEO工具源码,可发9600条优质外链
  16. python输出日历_python输出指定月份日历的方法
  17. 东方时尚驾校科目一网上视频快速通过方法
  18. ConnectBot连接Linux服务器手机端工具
  19. 英语学习笔记——发音篇
  20. win11 更新后打不开 pycharm 解决方案

热门文章

  1. 基于Python的EasyGUI学习
  2. 查看weblogic Java版本_获取WebLogic版本号有以下几种方式
  3. Java实现一个分数类
  4. 后端validated校验
  5. 为什么要解散matlab爱好者微信群?
  6. 谈谈所谓直播签约费吧
  7. Java生鲜电商平台-电商会员体系系统的架构设计与源码解析
  8. MySQL中 delimiter 关键字详解
  9. 无线法则有哪些服务器,无限法则配置要求一览 腾讯吃鸡无限法则最低电脑配置推荐...
  10. MongoDB 条件操作符 gt、gte、lt、lte