You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL查询无新增文件的15天以上历史文件

解决Oracle SQL筛选特定File记录的问题

要实现你需要的筛选逻辑,核心是两步:先找出近15天没有新增文件的文章,再从这些文章中挑选出自身插入时间超过15天的File记录。原语句只判断了文件自身的插入时间,没关联文章的整体情况,所以会返回不符合要求的记录。

方案一:子查询筛选符合条件的文章

SELECT f.*
FROM File f
WHERE f.insertion_date <= SYSDATE - 15
AND f.article_id IN (
    -- 找出近15天无新增文件的文章:最新文件插入时间超过15天
    SELECT article_id
    FROM File
    GROUP BY article_id
    HAVING MAX(insertion_date) <= SYSDATE - 15
);

方案二:JOIN关联聚合结果(适合大数据量场景)

SELECT f.*
FROM File f
JOIN (
    SELECT article_id
    FROM File
    GROUP BY article_id
    HAVING MAX(insertion_date) <= SYSDATE - 15
) valid_articles ON f.article_id = valid_articles.article_id
WHERE f.insertion_date <= SYSDATE - 15;

逻辑验证

  • 对于文章1:存在10天前的文件,子查询中MAX(insertion_date)为10天前(晚于SYSDATE-15),因此该文章不会被纳入筛选范围,其20天前的文件也不会被返回
  • 对于文章2:所有文件插入时间均为15天前,MAX(insertion_date)等于SYSDATE-15,符合文章筛选条件,且自身插入时间满足要求,所以所有4条记录都会被返回

内容的提问来源于stack exchange,提问作者Vinnicius Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:40:23