首页 > 数据库 > mysql教程 > 如何使用子查询和过滤选择前 10 条 Oracle 记录?

如何使用子查询和过滤选择前 10 条 Oracle 记录?

Barbara Streisand
发布: 2025-01-18 15:51:09
原创
640 人浏览过

How to Select the Top 10 Oracle Records Using a Subquery and Filtering?

使用子查询和过滤在 Oracle 中选择前 10 条记录

在 Oracle 数据库中,可以使用子查询和过滤技术来选择按特定列排序的前 10 条记录。可以修改最初用于选择所有匹配记录的查询以包含此要求。

为了解决返回“随机”记录的问题,可以使用 ROWNUM 子句(即 LIMIT 子句的 Oracle 等效项)。

修改后的查询:

<code class="language-sql">SELECT * 
FROM 
(
  SELECT DISTINCT 
    APP_ID, 
    NAME, 
    STORAGE_GB, 
    HISTORY_CREATED, 
    TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY 
  WHERE 
    STORAGE_GB IS NOT NULL AND 
    APP_ID NOT IN (
      SELECT APP_ID 
      FROM HISTORY 
      WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009'
    )
  ORDER BY 
    STORAGE_GB DESC 
) 
WHERE 
  ROWNUM <= 10;</code>
登录后复制

此查询首先使用子查询检索符合条件的记录。然后,它应用 ROWNUM 子句,根据排序标准从结果数据集中选择前 10 条记录。

性能注意事项:

如果处理大型数据集时查询性能较慢,请考虑对子查询谓词使用 NOT EXISTS 而不是 NOT IN。当子查询包含大量记录时,NOT EXISTS 的效率可能更高。

以上是如何使用子查询和过滤选择前 10 条 Oracle 记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

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