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

为何SQL查询仅显示重复2次的行?重复次数超2的未展示

问题分析与解决方案

你的SQL语句核心问题是分组维度错误:你同时按patient_no(患者编号)和id_no(身份证号)分组,这意味着统计的是「同一患者+同一身份证号」的重复次数,而非单纯「同一身份证号」的重复次数。

举个例子:如果同一个id_no对应3个不同的patient_no,每个组合各出现1次,原SQL会把它们分成3个分组,每个分组的COUNT(*)都是1,不会被HAVING COUNT(*) > 1筛选出来;只有当某个patient_no+id_no的组合重复出现时(比如同一患者的同一身份证号录了2次),才会被统计到,这就导致你看不到重复次数大于2的id_no。

修正后的SQL语句

如果你要筛选所有重复的身份证号(不管对应多少个不同患者),只需要按id_no单独分组:

SELECT 
  id_no,
  COUNT(*) AS duplicate_count,
  GROUP_CONCAT(DISTINCT patient_no) AS related_patients -- 可选:查看该身份证号关联的所有患者编号
FROM MR_PATIENT_IDS
GROUP BY id_no
HAVING COUNT(*) > 1

如果你的需求是同一患者下重复的身份证号(即同一个患者有多条相同身份证号的记录),原SQL逻辑本身是正确的,但如果没出现重复次数大于2的结果,大概率是你的数据中不存在这类情况,或者可以检查是否有数据过滤、字段类型不匹配(比如id_no存在空格/大小写差异导致分组错误)的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:50:11