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

MySQL中Group By如何将多个不同状态值合并为一类进行Count统计

解决方案

核心通过CASE表达式对状态字段做自定义映射,将两个待合并的状态归为同一类后分组统计即可,修改后的代码如下:

SELECT 
  CASE 
    WHEN UR.status IN ('Pending', 'Sent For Approval') THEN '待审批' -- 可替换为你需要的分类名,如英文的'Pending & Approval'
    ELSE UR.status 
  END AS status_type,
  COUNT(UR.UnitRateID) AS total
FROM UnitRate UR
INNER JOIN Telecom TC 
  ON UR.UnitOwnerID = TC.UnitOwnerID
WHERE 
  UR.status IN ('Pending','Sent For Approval','Approved','Rejected')
  AND UR.WaterPeriodFrom = '".$MeterDateFrom."'
  AND UR.WaterPeriodTo = '".$MeterDateTo."'
  AND TC.TelPeriodFrom = '".$MeterDateFrom."'
  AND TC.TelPeriodTo = '".$MeterDateTo."'
GROUP BY status_type
ORDER BY FIELD(status_type, '待审批', 'Rejected', 'Approved') ASC

逻辑说明

  • 映射规则:Pending和Sent For Approval统一归为同一类,Approved、Rejected保持原有单独统计逻辑,Reset状态不在过滤范围内自动排除,完全匹配需求
  • 排序逻辑做了对应调整,保证合并后的待审批分类排在最前,后续状态顺序和原有要求一致
  • 优化掉了原写法中效率较低的相关子查询,直接关联后分组统计,查询性能更高

注意:原代码直接拼接$MeterDateFrom、$MeterDateTo参数存在SQL注入风险,建议改为预编译参数绑定的方式传参。

内容的提问来源于stack exchange,提问作者Ethic Or Logics

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:18:03