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

基于Overwrite字段过滤数据库重复Date/Time记录的实现咨询

数据库记录过滤需求与实现

过滤规则

  • 当同一Date和Time组合下存在Overwrite = true的记录时,仅保留该Overwrite = true的记录,移除所有同组合下Overwrite = false的记录
  • 无重复Date/Time组合的记录(即该组合下仅单条记录,无论Overwrite值),直接保留

原始数据库记录

Date                Time          Name                 Overwrite
=======             ====        ===========            ======
10/01/2022          04:00       John White             false
11/01/2022          20:00       John Lee               false
10/01/2022          04:00       Tom Lee                true
12/01/2022          04:00       John Lee               false 

期望过滤结果

Date            Time        Name          Overwrite
=======         ======      ===========   ==========
10/01/2022      04:00       Tom Lee        true
11/01/2022      20:00       John Lee       false
12/01/2022      04:00       John Lee       false 

实现SQL查询

通用方案(适配多数关系型数据库)

通过窗口函数分组筛选,按Date和Time分组后优先保留Overwrite = true的记录:

WITH ranked_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY Date, Time 
            ORDER BY CASE WHEN Overwrite = true THEN 0 ELSE 1 END
        ) AS rn
    FROM your_table_name
)
SELECT Date, Time, Name, Overwrite
FROM ranked_records
WHERE rn = 1;

逻辑说明

  • 窗口函数ROW_NUMBER()按Date和Time分组,对组内记录排序:Overwrite = true的记录会被标记为第1位(通过CASE语句给它赋值0,优先级高于false对应的1)
  • 最后筛选每组的第一条记录,即可满足规则要求的过滤逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:46:00