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

MySQL按条件查询特定行:筛选含Value=D且不含B的ID

MySQL Query: Find IDs with at Least One 'D' and No 'B' in Value Column

首先明确你的原始表数据(假设表名为your_table):

ID   Value
KA-1 A
KA-1 B
KA-1 C
KA-1 D
KA-2 A
KA-2 C
KA-2 C
KA-2 D
KA-3 C
KA-3 B

你的需求是筛选出同时满足两个条件的ID:

  • 该ID对应的Value中至少包含一个'D'
  • 该ID对应的Value中完全不存在'B'

预期输出结果:

ID
KA-2

方案1:使用GROUP BY + HAVING聚合筛选

这种方法逻辑直观,通过分组后统计符合条件的记录数来筛选:

SELECT ID
FROM your_table
GROUP BY ID
HAVING 
  -- 确保至少有一个D
  SUM(CASE WHEN Value = 'D' THEN 1 ELSE 0 END) > 0
  -- 确保完全没有B
  AND SUM(CASE WHEN Value = 'B' THEN 1 ELSE 0 END) = 0;

方案2:使用EXISTS + NOT EXISTS子查询

如果你的表数据量较大,这种方案在有合适索引(比如ID和Value的联合索引)的情况下性能会更优:

SELECT DISTINCT t1.ID
FROM your_table t1
WHERE 
  t1.Value = 'D'
  AND NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.ID = t1.ID AND t2.Value = 'B'
  );

这里的DISTINCT用来去除同一个ID下多条D记录带来的重复结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:15:44