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

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

Barbara Streisand
Barbara Streisand原创
2025-01-18 15:51:09717浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn