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

MySQL中能否统计同一分组内指定数值组合的出现次数?

统计同一ID下同时包含指定数值的记录次数

可以仅通过SQL语句实现需求,下面提供两种高效的解决方案:

方法一:分组聚合 + 条件筛选

这种方法适合需要匹配多个数值的场景,扩展性强(比如要匹配3个数值时只需调整IN和HAVING的条件):

SELECT COUNT(DISTINCT id) AS match_count
FROM entries
WHERE number IN (0, 9)
GROUP BY id
HAVING COUNT(DISTINCT number) = 2;

逻辑说明:

  1. 先筛选出所有number为目标数值(0或9)的记录
  2. 按id分组,统计每个分组内不同number的数量
  3. 只保留分组内number数量等于目标数值个数(这里是2)的分组,即该id同时包含所有目标数值
  4. 最后统计符合条件的id总数

如果业务上保证同一id下不会重复出现同一个number,可以去掉DISTINCT来提升性能,改为COUNT(number) = 2。

方法二:自连接查询

这种方法逻辑直观,适合仅匹配两个数值的场景:

SELECT COUNT(DISTINCT e1.id) AS match_count
FROM entries e1
JOIN entries e2 ON e1.id = e2.id
WHERE e1.number = 0 AND e2.number = 9;

逻辑说明:

  1. 将表自身连接,关联条件为id相同
  2. 分别筛选出两个连接表中number等于目标数值的记录
  3. 统计满足条件的唯一id数量,即同时包含两个目标数值的id总数

针对你的示例数据,两种方法都会返回结果2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:31:13