首页 > 数据库 > mysql教程 > 如何使用'ORDER BY”和'ROWNUM”高效地从 Oracle 表中检索顶行?

如何使用'ORDER BY”和'ROWNUM”高效地从 Oracle 表中检索顶行?

Susan Sarandon
发布: 2025-01-07 07:35:41
原创
993 人浏览过

How to Efficiently Retrieve the Top Row from an Oracle Table Using `ORDER BY` and `ROWNUM`?

高效使用 Oracle ORDER BY 和 ROWNUM

在 Oracle 中,ROWNUM 伪列提供了一种从结果集中检索特定行的方法他们的顺序。但是,将 ROWNUM 与 ORDER BY 一起使用可能会导致意外结果。

要从表中检索最新记录,SQL Server 中通常使用以下 SQL 查询:

SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
登录后复制

但是,在 Oracle 中,将此方法与 ROWNUM 一起使用,如以下查询所示:

SELECT *
FROM raceway_input_labo 
WHERE  rownum <= 1
ORDER BY t_stamp DESC
登录后复制

将检索最旧的记录而不是最新的记录。这是因为在 Oracle 中,ROWNUM 在 ORDER BY 之前计算。

要使用 Oracle 的 ROWNUM 有效检索最新记录,请使用子查询,如下所示:

SELECT * 
FROM 
    (SELECT *
     FROM raceway_input_labo 
     ORDER BY t_stamp DESC)
WHERE  rownum <= 1
登录后复制

此子查询方法可确保 ORDER首先应用 BY,从而产生所需的输出。

或者,可以使用更通用的解决方案,可以在 SQL Server 和 SQL Server 中使用Oracle可以使用row_number()函数来实现:

select ril.*
from (select ril.*, row_number() over (order by t_stamp desc) as seqnum
      from raceway_input_labo ril
     ) ril
where seqnum = 1
登录后复制

以上是如何使用'ORDER BY”和'ROWNUM”高效地从 Oracle 表中检索顶行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板