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

如何在SQL中基于其他表的修改时间筛选对应ID的近一年历史数据?

跨表时间区间筛选实现方案

核心逻辑

用ID关联两张表,以表1里每个ID的Modified Time作为基准,算出基准时间往前推1年的日期作为区间下限,然后把表2里Updated Time落在「下限日期到基准日期」这个范围内的记录挑出来,自动排除基准时间之后的无效数据。

SQL实现代码

假设两张表的名称和字段如下:

  • 表1(table1):id(唯一标识)、modified_time(修改时间)
  • 表2(table2):id(关联标识)、updated_time(更新时间)、其他业务字段
SELECT 
    t2.id,
    t2.updated_time,
    -- 这里可以按需添加表2的其他业务字段
    t1.modified_time AS 基准时间
FROM 
    table1 t1
INNER JOIN 
    table2 t2 ON t1.id = t2.id
WHERE 
    t2.updated_time <= t1.modified_time
    AND t2.updated_time >= DATE_SUB(t1.modified_time, INTERVAL 1 YEAR);

代码说明

  • INNER JOIN:通过ID把两张表绑定,保证每个ID的基准时间能对应到它在表2里的所有记录
  • DATE_SUB(...):自动计算基准时间前1年的日期,不用手动去算每个ID的区间下限
  • WHERE条件:精准锁定有效记录——既不晚于基准时间,也不早于基准时间前一年,直接过滤掉基准时间之后的无效数据

拿你举的例子来说:ID23的modified_time是2022-07-17,这条SQL会自动筛选出表2里ID23的updated_time在2021-07-17到2022-07-17之间的所有记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:06:27