`
keepwork
  • 浏览: 334397 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle--查询最近跟新的数据,查询前100条,rownum 用法

js 
阅读更多

开发者博客www.developsearch.com

 

 

查询最近2小时跟新的记录
Select * From book  Where  update_time > sysdate-2/24

sysdate+(5/24/60/60) 在系统时间基础上延迟5秒

sysdate-(5/24/60/60) 在系统时间基础上减去5秒

sysdate+5/24/60 在系统时间基础上延迟5分钟

sysdate-5/24/60 在系统时间基础上减去5分钟


sysdate+5/24 在系统时间基础上延迟5小时

sysdate-5/24 在系统时间基础上减去5小时 


sysdate+5 在系统时间基础上延迟5天

....


add_months(sysdate,-5) 在系统时间基础上延迟5月

.....


add_months(sysdate,-5*12) 在系统时间基础上延迟5年

....

 

 

rownum 用法,来源网络

如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识,希望你在浏览完以下的文章会以下就是正文的详细内容的介绍。

在Oracle怎样查询表中的top10条记录呢?

  1. select *  
  2. from test  
  3. where rownum <=10  

下面是关于rownum的介绍

Rownum和row_number() over()的使用

ROWNUM是Oracle从8开始提供的一个伪列,是把SQL出来的结果进行编号,始终从1开始,常见的用途就是用来分页输出.

比如

  1. SELECT *  
  2. FROM torderdetail a  
  3. WHERE ROWNUM <= 10  

这条语句就是输出前10条纪录,在这里用途上类似于sql sever的top,不过rownum对于指定编号区间的输出应该说更强大

  1. SELECT *  
  2. FROM (SELECT a.*, ROWNUM rn  
  3. FROM torderdetail a)  
  4. WHERE rn >= 10 AND rn <= 20  

这条语句即是输出Oracle查询第10到第20条纪录,这里之所以用rownum rn,是把rownum转成实例,因为rownum本身只能用 <=的比较方式,只有转成实列,这样就可做 >=的比较了。

在实际用途中,常常会要求取最近的几条纪录,这就需要先对纪录进行排序后再取rownum <=

一般常见的

  1. SELECT *  
  2. FROM (SELECT a.*  
  3. FROM torderdetail a  
  4. ORDER BY order_date DESC)  
  5. WHERE ROWNUM <= 10  

而在CSDN曾经发生过讨论,关于取近的10条纪录,有人给出这样的语句

  1. SELECT a.*  
  2. FROM torderdetail a  
  3. WHERE ROWNUM <= 10  
  4. ORDER BY order_date DESC  

之所以会出现这样的语句,主要是从效率上的考虑,前面条语句,是要进行全表扫描后再排序,然后再取10条纪录,后一条语句则不会全表扫描,只会取出10条纪录,很明显后条语句的效率会高许多。

那为什么会有争议呢,那就在于在执行顺序上争议,是先执行排序取10条纪录,还是取10条纪录,再排序呢?两种顺序取出来的结果是截然相反 的,Oracle查询前10条记录时先排序再取10条,就是取最近的10条,而先取10条,再排序,则取出的最早的10条纪录。对于此语句,普遍的认为执 行顺序是先取10条纪录再排序的。

所以此语句应该是错误。但实际上并非如此,此语句的执行顺序和order by的字段有关系,如果你order by 的字段是pk,则是先排序,再取10条(速度比第一种语句快),而排序字段不是PK 时,是先取10条再排序,此时结果就与要求不一样了,所以第二种写法一定要在排序字段是主键的情况下才能保证结果正确。

Row_number() over()这个分析函数是从9I开始提供的,一般的用途和rownum差不多。

一般写法row_number() over( order by order_date desc) 生成的顺序和rownum的语句一样,效率也一样(对于同样有order by 的rownum语句来说),所以在这种情况下两种用法是一样的。

而对于分组后取最近的10条纪录,则是rownum无法实现的,这时只有row_number可以实现,row_number() over(partition by 分组字段 order by 排序字段)就能实现分组后编号,比如说要取近一个月的每天最后10个订单纪录

  1. SELECT *  
  2. FROM (SELECT a.*,  
  3. ROW_NUMBER () OVER (PARTITION BY TRUNC (order_date) ORDER BY order_date DESC)  
  4. rn  
  5. FROM torderdetail a)  
  6. WHERE rn <= 10  

Rownum的另类用法,有时候我们会遇到这种需求,要求输出当月的所有天数,许多人会烦恼,数据库里又没有这样的表,怎么输出一个月的所有天数呢?用rownum就能解决:

  1. SELECT TRUNC (SYSDATE, 'MM') + ROWNUM - 1  
  2. FROM DUAL  
  3. CONNECT BY ROWNUM <= TO_NUMBER 
    (TO_CHAR (LAST_DAY (SYSDATE), 'dd'))  

开发者博客www.developsearch.com

分享到:
评论

相关推荐

    oracle-rownum用法

    例如,使用 `ROWNUM=1` 可以找到学生表中第一条学生的信息,但使用 `ROWNUM=2` 将查不到数据。 大于某值的查询条件 如果想找到从第二行记录以后的记录,使用 `ROWNUM&gt;2` 是查不出记录的,原因是 ROWNUM 是一个总是...

    Oracle--ROWNUM.rar_oracle

    在Oracle中,`ROWNUM`是一个非常重要的概念,它涉及到数据检索、分页查询以及优化查询性能等多个方面。本篇将深入探讨`ROWNUM`的使用技巧及其在实际操作中的应用。 首先,`ROWNUM`是一个内置的伪列,它会在查询结果...

    ORACLE 中ROWNUM用法总结

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`&gt;`, `&gt;=`, `=`等)时,容易引发...

    oracle rownum 学习

    例如要查询ROWNUM在第二行到第三行之间的数据,包括第二行和第三行数据,可以使用以下语句: ```sql SELECT * FROM ( SELECT ROWNUM NO, ID, NAME FROM STUDENT WHERE ROWNUM ) WHERE NO &gt;= 2; ``` 七、ROWNUM和...

    oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 &lt; 或 &lt;=, 而用 =, &gt;, &gt;= 都将不能返回任何数据  例:查询工资前20名的员工姓名,工资 ,工资由高到低 Select rownum,first_name,salary from (Select first_name, salary ...

    在oracle中灵活使用Rownum和rowId

    在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过示例来帮助读者更好地理解。 #### 一、...

    oracle rownum 的使用 和sqlserver有区别的!

    本文将详细介绍 Oracle 中 ROWNUM 的使用方法,并与 SQL Server 中相应的功能进行对比分析。 #### Oracle ROWNUM 基础用法 1. **ROWNUM 的默认行为:** - 在 Oracle 中,ROWNUM 默认从 1 开始计数,对于每一行...

    Oracle中如何用一条SQL快速生成10万条测试数据

    在Oracle数据库管理中,生成大量测试数据是进行性能测试、数据建模以及验证查询效率等场景下不可或缺的一环。本文将深入探讨如何利用一条SQL语句在Oracle中快速生成10万条测试数据,这对于数据库管理员和开发人员来...

    解析oracle的rownum

    下面我们将通过实例来详细解析 ROWNUM 的使用方法和技巧。 使用 ROWNUM 查找前 N 个数据 在 Oracle 中,我们可以使用 ROWNUM 来查找前 N 个数据。例如,如果我们想要找到学生表中第一条学生的信息,可以使用 ...

    oracle中rownum的用法及解说

    通过以上介绍可以看出,`ROWNUM`在Oracle数据库中是一个非常实用的功能,它不仅可以帮助我们快速定位数据,还可以在分页查询等场景中发挥重要作用。掌握其使用方法对于提高数据库操作效率至关重要。

    rownum用法(不使用minus)

    ### rownum用法详解 #### 一、rownum基本概念 `rownum` 是 Oracle 数据库中的一个特殊字段,主要用于给查询结果集中的每一行分配一个唯一的序号,该序号从 1 开始递增。`rownum` 的主要用途之一是用于实现分页查询...

    oracle中rownum的用法

    ### Oracle中的ROWNUM使用详解 #### 一、ROWNUM简介 在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它为查询结果中的每一行分配一个唯一的行号。这个行号从1开始,每增加一行,行号就递增1。`ROWNUM`对于数据...

    oracle的rownum用法

    理解`ROWNUM`的工作原理对于编写高效的Oracle查询至关重要,尤其是在处理大型数据集时,能够帮助我们避免不必要的性能问题。正确使用`ROWNUM`可以让我们更好地控制查询结果的范围,从而实现更精细化的数据处理。

    oracle分页查询并返回总记录数据存储过程

    Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种高效且灵活的方式。本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在...

    Oracle查询语句大全-精华版

    本文将详细介绍 Oracle 查询语句的使用方法和实践操作。 一、创建用户和授权 在 Oracle 中,创建用户和授权是最基本的操作。使用以下语句可以创建用户和授权: create user username identified by password; ...

    oracle rownum 使用技术.pdf

    3. **性能考虑**:在处理大量数据时,应考虑使用其他方法如窗口函数(如RANK()、ROW_NUMBER()等)替代ROWNUM,以提高查询性能。 综上所述,ROWNUM是一个非常有用的工具,尤其是在实现特定结果输出和分页查询方面。...

    Oracle rownum.docx

    查询ROWNUM在特定区间的数据,通常也需要使用子查询,因为直接使用ROWNUM无法同时满足两个边界条件。例如,要获取ROWNUM在2到3之间的记录,可以写成`SELECT * FROM (SELECT ROWNUM NO, id, name FROM student WHERE ...

    Oracle-C#分页控件

    Oracle-C#分页控件是将Oracle数据库与C#编程语言结合,实现数据查询和展示时的分页功能。在Windows应用程序(Winform)开发中,分页是必不可少的一个特性,尤其是在处理大量数据时,它能提高应用性能,提供更好的...

    oracle分页查询sql

    基于`ROWNUM`的分页查询是Oracle中最常见的分页方法之一。它通过两层嵌套查询实现,具体格式如下: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ROWNUM ) ...

Global site tag (gtag.js) - Google Analytics