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

如何检索ID与Start日期组合重复的对应数据?

检索ID与Start日期重复的记录方法

要筛选出ID和Start日期组合重复出现的所有记录(即保留(ID, Start)对出现次数≥2的全部行),可以用以下几种SQL实现方式:

方法1:窗口函数COUNT() OVER()(推荐,直观高效)

SELECT ID, Start
FROM (
    SELECT 
        ID, 
        Start,
        -- 按ID和Start分组,统计每组的行数
        COUNT(*) OVER (PARTITION BY ID, Start) AS duplicate_count
    FROM your_table_name -- 替换为你的实际表名
) AS temp
WHERE duplicate_count > 1
ORDER BY ID, Start;

逻辑:子查询为每一行标记其所属(ID, Start)组的总行数,外层筛选计数大于1的行,即可得到所有重复记录。

方法2:GROUP BY + JOIN

SELECT t.ID, t.Start
FROM your_table_name t
INNER JOIN (
    -- 先找出所有重复的(ID, Start)组合
    SELECT ID, Start
    FROM your_table_name
    GROUP BY ID, Start
    HAVING COUNT(*) > 1
) AS duplicate_pairs 
    ON t.ID = duplicate_pairs.ID 
    AND t.Start = duplicate_pairs.Start
ORDER BY t.ID, t.Start;

逻辑:先通过分组查询得到所有重复的(ID, Start)组合,再通过关联查询取出原表中属于这些组合的所有行。

方法3:EXISTS子查询

如果表有唯一主键(比如row_id),可以用这种方式:

SELECT ID, Start
FROM your_table_name t1
WHERE EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t1.ID = t2.ID 
      AND t1.Start = t2.Start
      AND t1.row_id != t2.row_id -- 排除自身匹配
)
ORDER BY ID, Start;

逻辑:对每一行,检查是否存在另一行与它的ID、Start完全相同但不是同一行,满足条件则保留该行。

示例验证

用你提供的测试数据执行上述任意SQL,都会得到期望输出:

ID          Start      
0001       31JAN2015      
0001       31JAN2015  
0004       31DEC2016 
0004       31DEC2016 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:35:19