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

如何编写SQL查询筛选同时包含A、B、C的Id

筛选同时包含全部指定Value的Id的SQL查询

给定数据表(假设表名为your_table)的数据如下:

IdValue
1A
1B
2A
2C
3A
3B
3C

需要筛选出同时拥有Value为A、B、C的Id,预期结果为3。

方法一:分组统计法

这是最常用的方案,通过分组后统计符合条件的Value数量来筛选:

SELECT Id
FROM your_table
WHERE Value IN ('A', 'B', 'C')
GROUP BY Id
HAVING COUNT(DISTINCT Value) = 3;

逻辑说明:

  1. WHERE Value IN ('A', 'B', 'C'):先过滤出只包含目标Value的记录,减少后续分组计算的数据量
  2. GROUP BY Id:按Id分组,把同一个Id的所有Value记录聚合到一起
  3. HAVING COUNT(DISTINCT Value) = 3:统计每个分组中不同Value的数量,等于3说明该Id同时包含A、B、C三个值(用DISTINCT是为了避免同一Id下出现重复Value导致计数不准的情况,如果你的数据中每个Id的Value不会重复,也可以用COUNT(*) = 3)

方法二:多表关联法

如果需要更直观的匹配逻辑,也可以用自关联的方式:

SELECT DISTINCT t1.Id
FROM your_table t1
JOIN your_table t2 ON t1.Id = t2.Id AND t2.Value = 'B'
JOIN your_table t3 ON t1.Id = t3.Id AND t3.Value = 'C'
WHERE t1.Value = 'A';

逻辑说明:

通过三次关联同一个表,分别匹配包含A、B、C的记录,只有同时满足三个关联条件的Id才会被筛选出来,最后用DISTINCT去重(确保每个Id只出现一次)。

两种方法都能得到预期结果:

Id
3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:20:24