MySQL查询:按secId分组筛选组内mic值非唯一的重复记录
实现方案
核心需求说明
对原始表按secId分组后,筛选保留当前分组内mic列重复出现的所有完整行,即仅保留同一secId下mic出现次数≥2的记录。
实现代码
方案1:窗口函数(简洁高效,支持主流SQL引擎)
WITH mic_count AS ( SELECT secId, sedol, mic, COUNT(*) OVER (PARTITION BY secId, mic) AS repeat_cnt FROM 你的表名 ) SELECT secId, sedol, mic FROM mic_count WHERE repeat_cnt >= 2;
方案2:子查询关联(兼容所有SQL版本)
SELECT t1.secId, t1.sedol, t1.mic FROM 你的表名 t1 INNER JOIN ( SELECT secId, mic FROM 你的表名 GROUP BY secId, mic HAVING COUNT(*) >= 2 ) t2 ON t1.secId = t2.secId AND t1.mic = t2.mic;
输出结果示例
执行上述代码后,可得到符合要求的输出:
secId sedol mic 258 B10RVH1 XNCD 258 B709630 XNCD 471 BF1SPP7 XHYF 471 BDCCPF4 XHYF
内容的提问来源于stack exchange,提问作者kmanish75
相关产品推荐
相关产品推荐

