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

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";

逻辑解释:

  1. 子查询部分:通过GROUP BY "Column A"分组后,用HAVING子句做两个核心判断:
    • COUNT(DISTINCT "Column B") >= 2:确保该A值对应的B至少有2个不同的条目
    • COUNT(*) >= 2:确保该A值本身存在重复记录(毕竟你要找的是列A有重复值的情况)
  2. 主查询部分:将原表和子查询结果关联,筛选出所有符合条件的A对应的B记录,最后通过GROUP BY去重,得到你想要的唯一(A,B)组合。

用你提供的示例数据测试,这个查询会返回:

Column A | Column B
----------+----------
        1 |        2
        1 |        3

完全符合期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:40