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

PostgreSQL:提取另一列同时匹配两个值的列数据

PostgreSQL查询:提取Col1中对应Col2同时包含A和B的值

问题描述

需要编写PostgreSQL查询语句,从表中提取Col1的所有值,要求这些值在Col2中同时匹配值'A'和'B'。

示例数据

Col1 Col2
123  A
456  B
234  A
456  A
098  A
567  B
567  A

期望结果

Result
456
567

解决方案

方法1:使用GROUP BY + HAVING

这种方法通过分组后统计不同Col2值的数量来筛选符合条件的Col1:

SELECT Col1
FROM your_table
WHERE Col2 IN ('A', 'B')
GROUP BY Col1
HAVING COUNT(DISTINCT Col2) = 2;
  • 逻辑:先用WHERE过滤出Col2为'A'或'B'的行,再按Col1分组,最后通过HAVING确保每个分组包含两种不同的Col2值(即同时有'A'和'B')。

方法2:使用INTERSECT

通过求两个查询结果的交集来得到同时存在'A'和'B'的Col1:

SELECT Col1 FROM your_table WHERE Col2 = 'A'
INTERSECT
SELECT Col1 FROM your_table WHERE Col2 = 'B';
  • 逻辑:第一个查询获取所有Col2为'A'的Col1,第二个查询获取所有Col2为'B'的Col1,INTERSECT会返回两个集合的共同值,也就是同时满足两种条件的Col1。

两种方法都能得到期望的结果,可根据实际表数据量和需求选择合适的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:01:12