PostgreSQL查询:筛选A列重复且B列含至少2个唯一值的数据
PostgreSQL查询:找出列A重复且对应列B含至少2个唯一条目的数据
这问题我之前也碰到过,给你个直接能用的查询方案,顺便拆解下逻辑:
SELECT t."Column A", t."Column B" FROM your_table t JOIN ( -- 先筛选出符合条件的Column A:有重复记录,且对应Column B至少2个唯一值 SELECT "Column A" FROM your_table GROUP BY "Column A" HAVING COUNT(DISTINCT "Column B") >= 2 AND COUNT(*) >= 2 ) sub ON t."Column A" = sub."Column A" -- 去重,避免同一(A,B)组合重复出现 GROUP BY t."Column A", t."Column B" ORDER BY t."Column A", t."Column B";
逻辑解释:
- 子查询部分:通过
GROUP BY "Column A"分组后,用HAVING子句做两个核心判断:COUNT(DISTINCT "Column B") >= 2:确保该A值对应的B至少有2个不同的条目COUNT(*) >= 2:确保该A值本身存在重复记录(毕竟你要找的是列A有重复值的情况)
- 主查询部分:将原表和子查询结果关联,筛选出所有符合条件的A对应的B记录,最后通过
GROUP BY去重,得到你想要的唯一(A,B)组合。
用你提供的示例数据测试,这个查询会返回:
Column A | Column B ----------+---------- 1 | 2 1 | 3
完全符合期望结果。
内容的提问来源于stack exchange,提问作者Dornheim
相关产品推荐
相关产品推荐

