首页 > 数据库 > mysql教程 > 如何在排除特定日期的情况下选择前 10 条 Oracle 记录?

如何在排除特定日期的情况下选择前 10 条 Oracle 记录?

Mary-Kate Olsen
发布: 2025-01-18 15:36:10
原创
306 人浏览过

How to Select the Top 10 Oracle Records While Excluding Specific Dates?

Oracle 前 10 条记录选择(带日期排除)

本文解决了常见的 Oracle 数据库挑战:检索按特定列排序的前 10 条记录,同时从另一个表中排除与特定条件匹配的记录。 由于这些元素的相互作用,带有 SELECT DISTINCTORDER BY 子句的简单 ROWNUM 是不够的。

该解决方案利用子查询来实现所需的结果:

<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 NOT EXISTS (
      SELECT 1
      FROM HISTORY h2
      WHERE 
        h2.APP_ID = HISTORY.APP_ID
        AND TO_CHAR(h2.HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009'
    )
  ORDER BY STORAGE_GB DESC
)
WHERE 
  ROWNUM <= 10;</code>
登录后复制

此方法首先过滤内部查询中的 HISTORY 表。 NOT EXISTS 子句有效地排除 APP_IDHISTORY_DATE 等于“06.02.2009”的记录匹配的记录。 然后结果按 STORAGE_GB 排序(降序)。外部查询应用 ROWNUM <= 10 约束,确保仅返回前 10 条记录。 此方法在过滤和排序之后正确应用行限制,保证准确的结果。

注意:对于此类排除,

通常比 NOT EXISTS 提供更好的性能,特别是对于大型数据集。 请查阅 Oracle 文档以了解进一步的性能优化策略。NOT IN

以上是如何在排除特定日期的情况下选择前 10 条 Oracle 记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

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