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

PostgreSQL如何查询列1唯一值对应多不同列2值的记录

PostgreSQL:返回列1对应多种列2值的所有记录

需求明确:从表中找出所有记录,要求这些记录的column1值对应至少两个不同的column2值。比如示例里column1=1对应column2的1和2,这两条都要返回;而column1=2只对应column2=1,就直接排除。

方案一:分组筛选+关联查询

先通过子查询找出符合条件的column1值,再关联原表获取完整记录:

SELECT t1.column1, t1.column2
FROM table1 t1
JOIN (
    -- 筛选出关联多个不同column2值的column1
    SELECT column1
    FROM table1
    GROUP BY column1
    HAVING COUNT(DISTINCT column2) > 1
) t2 ON t1.column1 = t2.column1;

方案二:窗口函数实现

用窗口函数直接计算每个column1分组内的不同column2数量,再筛选结果:

SELECT column1, column2
FROM (
    SELECT 
        column1, 
        column2,
        -- 按column1分组,统计组内不同column2的数量
        COUNT(DISTINCT column2) OVER (PARTITION BY column1) AS distinct_col2_count
    FROM table1
) sub_query
WHERE distinct_col2_count > 1;

逻辑说明

你提到的select distinct (column2, column1) my_distinct from table1;是用于获取去重后的(column2,column1)组合,而上面的方案是反向逻辑:专门定位那些column1对应多种column2值的原始记录,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:17:42