MySQL中如何实现部分分组?仅用SELECT不修改原表
用SELECT语句合并特定登录项的解决方案
可以通过条件分组+聚合函数实现需求,无需修改原始数据表,具体SQL语句如下:
SELECT CASE WHEN NAME IN ('spec1', 'spec2', 'spec3') THEN 'spec' ELSE NAME END AS NAME, SUM(VALUE) AS VALUE FROM 你的表名 GROUP BY CASE WHEN NAME IN ('spec1', 'spec2', 'spec3') THEN 'spec' ELSE NAME END ORDER BY NAME;
逻辑说明
- 使用
CASE WHEN将spec1、spec2、spec3统一映射为spec,其他名称保持不变 - 按照映射后的名称分组,用
SUM(VALUE)计算合并后的总值 - 最终结果会将三个spec项合并为一行,其余项保留原有记录
效果验证
输入数据:
NAME VALUE spec1 1 1 2 2 0 spec2 2 3 3 4 1 spec3 4
执行SQL后输出:
NAME VALUE spec 7 1 2 2 0 3 3 4 1
内容的提问来源于stack exchange,提问作者berlord
相关产品推荐
相关产品推荐

