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

如何在SQL中识别重复值?现有查询出现重复数据求助

识别SQL查询中的重复值

你的原始查询出现重复行,核心原因是inpatient_mapping表中存在多条满足token_person_id = a.token_person_id且disdate = a.indexdate的记录,LEFT JOIN后会将这些多条记录与a表的单条记录关联,从而产生重复输出。

以下是几种帮你定位重复值的查询方法:

1. 统计重复分组的次数

这个查询可以快速找出哪些token_person_id和indexdate的组合产生了重复,以及重复的次数:

SELECT 
    a.token_person_id,
    a.indexdate,
    COUNT(*) AS duplicate_count
FROM 
    new_alzheimers_agegroup2 a
LEFT JOIN
    inpatient_mapping b ON b.token_person_id = a.token_person_id 
                        AND a.indexdate = b.disdate
GROUP BY 
    a.token_person_id, a.indexdate
HAVING 
    COUNT(*) > 1
ORDER BY 
    duplicate_count DESC;

2. 查看具体的重复记录详情

如果需要看到重复的具体数据(比如admidate的差异),可以用窗口函数标记重复行:

SELECT 
    b.admidate,
    a.token_person_id,
    a.indexdate,
    ROW_NUMBER() OVER (PARTITION BY a.token_person_id, a.indexdate ORDER BY b.admidate) AS row_num
FROM 
    new_alzheimers_agegroup2 a
LEFT JOIN
    inpatient_mapping b ON b.token_person_id = a.token_person_id 
                        AND a.indexdate = b.disdate
ORDER BY 
    a.token_person_id, a.indexdate, row_num;

执行后,row_num大于1的行就是对应的重复记录,你可以通过这些数据排查inpatient_mapping表中同一token_person_id和disdate下存在多条记录的原因。

另外补充:你的原始查询未添加GROUP BY子句,COUNT(DISTINCT a.token_person_id)的统计逻辑并不合理,这也是导致结果不符合预期的一个因素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:04:56