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

如何用SQL筛选无时间重叠记录及重叠区间中position更小的记录

SQL实现重叠时间帧记录筛选方案

核心逻辑

同key维度下判断记录时间是否重叠,仅过滤掉与更小position记录存在时间重叠的条目,其余记录全部保留。
时间重叠判定规则:两条记录满足 A.valid_from < B.valid_to AND B.valid_from < A.valid_to 即判定为重叠。

通用实现SQL(兼容所有支持子查询的主流数据库)

SELECT `key`, valid_from, valid_to, position
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1 
    FROM your_table t2 
    WHERE t2.key = t1.key 
      AND t2.position < t1.position 
      AND t1.valid_from < t2.valid_to 
      AND t2.valid_from < t1.valid_to
);

逻辑说明

  1. 用NOT EXISTS子句判断当前记录是否存在同key下、position更小且时间重叠的记录
  2. 若存在则当前记录被过滤,若不存在则保留
  3. 临界时间相邻的记录(如上例中b的2017-2021和2021-9999)不会被判定为重叠,会全部保留,完全匹配预期输出。

低版本数据库适配

如果数据库不支持CTE语法,以上写法已经可以直接运行,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:36:04