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

MySQL中如何统计单行内多列指定值的出现次数?

解决MySQL单行多列统计指定值出现次数的问题

嘿,我懂你碰到的困扰啦!你现在用的COUNT(*)是在统计满足条件的行数——哪怕同一行里有多个列匹配Menu 1,它也只会把这一行算1次,所以才会返回1而不是你想要的2。

要实现按列统计每个符合条件的值的总次数,我们可以用MySQL的条件求和思路,把每一列的匹配结果转换成数值后相加,具体SQL语句如下:

SELECT 
  SUM(
    (menu_person1 = 'Menu 1') + 
    (menu_person2 = 'Menu 1')
  ) AS menu_1_count 
FROM my_table 
WHERE date = '2020-04-29';

为什么这个方法管用?

在MySQL中,布尔表达式(比如menu_person1 = 'Menu 1')会自动被转换为整数:匹配成功时返回1,失败时返回0。我们把每一列的这个结果相加,就能得到单一行里Menu 1的出现次数,再通过SUM()函数汇总指定日期下所有行的结果,就得到了Menu 1的总出现次数。

如果后续你的表增加了更多类似的列(比如menu_person3、menu_person4),只需要在SUM()的括号里继续追加对应的条件表达式即可,扩展性非常好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:43:12