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

(1) rownum 对于等于某值的查询条件
如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生 表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是 false条件,所以无法查到rownum = n(n>1的自然数)。
SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标)
SQL> select rownum,id,name from student where rownum =2;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------

(2)rownum对于大于某值的查询条件
   如果想找到从第二行记录以后的记录,当使用rownum>2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum> n(n>1的自然数)这种条件依旧不成立,所以查不到记录。

查找到第二行以后的记录可使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。

SQL>select * from(select rownum no ,id,name from student) where no>2;
        NO ID     NAME
---------- ------ ---------------------------------------------------
         3 200003 李三
         4 200004 赵四

假如要返回前5条记录:

  select * from tablename where rownum<6;(或是rownum <= 5 或是rownum != 6)

注意:只能用以上符号(<、<=、!=)。不能用:>,>=,=,Between...and

1.在ORACLE中实现SELECT TOP N

由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。

简单地说,实现方法如下所示:

SELECT 列名1...列名n FROM

(SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n)

WHERE ROWNUM <= N(抽出记录数)

ORDER BY ROWNUM ASC

转载于:https://www.cnblogs.com/JemBai/archive/2011/04/18/2019920.html

oracle中取最新的前几条记录(rownum)相关推荐

  1. java 选取topn_取Oracle中实现TOPN,选取前几条记录

    例1:查询各个部门的MANAGER(经理)中谁的工资最低   hr select * from ( select t1.manager_id as 员工编号,t2.first_name as 员工姓名 ...

  2. mysql单列去重复group by分组取每组前几条记录加order by排序

    <div class="post"><h1 class="postTitle"><a id="cb_post_title ...

  3. mysql 排序取前4,mysql分组取每组前几条记录(排序)

    首先来造一部分数据,表mygoods为商品表,cat_id为分类id,goods_id为商品id,status为商品当前的状态位(1:有效,0:无效). CREATE TABLE `mygoods` ...

  4. sql 取表的前10条记录,任意中间几行的记录

    取表的前10条记录 with a as(select *,row_number()over(order by department)rn from _SucceedStaff ) select * f ...

  5. 各个数据库的取一表前N条记录不同SQL写法

    部分数据库可用用不着,且记下 1. ORACLE  SELECT * FROM TABLE1 WHERE ROWNUM<=N 2. INFORMIX c tP'\79]   SELECT FIR ...

  6. mysql分组取每组前几条记录(排序)

    首先来造一部分数据,表mygoods为商品表,cat_id为分类id,goods_id为商品id,status为商品当前的状态位(1:有效,0:无效). CREATE TABLE `mygoods` ...

  7. 茴香豆的n种写法之②——Sql据多个条件 查询每个条件的前N条记录

    --------------------------------- -- Author: liangCK 小梁 -- Title : 查每个分组前N条记录 -- Date : 2008-11-13 1 ...

  8. 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)

    SQL在不同数据库中查询前几条记录的用法分类 1. orACLE Select * FROM TABLE1 Where ROWNUM<=N 2. INFORMIX Select FIRST N ...

  9. oracle 取前10条记录

    1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...

最新文章

  1. MySQL 分库分表及其平滑扩容方案
  2. 专访梅耶·马斯克:硅谷钢铁侠是怎样被炼成的?
  3. python语言入门p-python语言程序设计基础(第2版)课后答案嵩天
  4. java apt anno_Android Studio中使用apt
  5. python整型图_python源码研究之整型对象探索
  6. [转]浅析DDD(领域驱动设计)
  7. 有名管道和无名管道的区别
  8. excel表格行列显示十字定位_WPS表格:Excel表格打印时,如何每页都显示标题行?...
  9. 【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)
  10. 【学习笔记】计算机导论之操作系统和文件管理
  11. 剑指offer 35 第一个只出现一次的字符
  12. LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)
  13. 构建简单的智能客服系统(三)——基于 UniMRCP 实现讯飞 TTS MRCP Server
  14. 泰拉瑞亚服务器config修改,泰拉瑞亚种子世界游戏配置修改教程
  15. Best practices for a new Go developer
  16. Java使用aspose生成简历
  17. 腾讯CEO马化腾:从“抄袭”开始创业之路
  18. peerDependencies WARNING 警告剖析
  19. NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】
  20. 翻译系统文本或者其他文本无法直接生成请求号(Request NO)解决方法(T-CODE:SLXT)

热门文章

  1. php函数设置默认值,php函数如何设置默认值作为对象?
  2. Xamarin.Forms中为WebView指定数据来源Source
  3. Xamarin Visual Studio不识别JDK路径
  4. Arduino Yun快速入门教程(大学霸内部资料)
  5. 字符转char android,android – 如何在kotlin语言中将char转换为ascii值
  6. python计算生态的命名_Python计算生态之random库
  7. python游戏服务器引擎_KBEngine游戏服务器引擎环境配置
  8. 贵港职称计算机,2015广西职称计算机考试报名:贵港职称计算机报名入口
  9. 计算机科普知识小动画,4岁嗯哼知识量惊呆杜江!这4部科普启蒙动画,孩子绝对不能错过...
  10. axios设置text html,axios封装动态设置Content-Type