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

SQL查询需求:获取同时存在Col2为aaa和bbb的唯一Col1值

解决SQL中获取同时包含多个值的唯一列值问题

嘿,刚入门SQL遇到这种需求很正常,我给你几种简单易懂的方案,都能帮你拿到想要的结果~

你的需求是:找出Col1的唯一值,要求对应的Col2中同时包含"aaa"和"bbb"。针对这个需求,这里有三种常用方法:

方法1:GROUP BY + HAVING(最直观的分组统计法)

这是处理这类“同时满足多个条件”分组需求的经典写法,逻辑清晰,适合新手理解:

SELECT Col1
FROM your_table_name
WHERE Col2 IN ('aaa', 'bbb') -- 先过滤无关行,提升效率
GROUP BY Col1
HAVING COUNT(DISTINCT Col2) = 2;

逻辑解释:

  1. WHERE子句先筛选出Col2是"aaa"或"bbb"的行,减少后续分组的计算量;
  2. 按Col1分组后,COUNT(DISTINCT Col2)会统计每个Col1下不同的目标值数量;
  3. 只有当数量等于2时,说明这个Col1同时拥有"aaa"和"bbb",才会被保留。

方法2:自连接法(适合理解表连接逻辑)

如果刚学表连接,这种写法能帮你更好理解关联查询的逻辑:

SELECT DISTINCT t1.Col1
FROM your_table_name t1
JOIN your_table_name t2 ON t1.Col1 = t2.Col1
WHERE t1.Col2 = 'aaa' AND t2.Col2 = 'bbb';

逻辑解释:

把同一个表当成两个独立的表t1和t2,通过Col1关联起来,找到那些在t1中是"aaa"、同时在t2中是"bbb"的同一个Col1,最后用DISTINCT去重(避免重复结果)。

方法3:EXISTS子查询法(大数据量下效率更优)

如果你的表数据量比较大,这种方法的查询效率通常会更高:

SELECT DISTINCT Col1
FROM your_table_name t
WHERE EXISTS (
    SELECT 1
    FROM your_table_name
    WHERE Col1 = t.Col1 AND Col2 = 'aaa'
)
AND EXISTS (
    SELECT 1
    FROM your_table_name
    WHERE Col1 = t.Col1 AND Col2 = 'bbb'
);

逻辑解释:

对每一行的Col1,分别检查是否存在对应的"aaa"记录和"bbb"记录,只有两个条件都满足时,这个Col1才会被选中。

验证结果

以上三种方法都会返回你期望的结果:

Col1
1
3

记得把代码中的your_table_name替换成你实际的表名哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:27:49