MySQL如何按指定值分组:合并特定ID并求和
解决方案
我们可以通过条件判断+分组聚合的方式实现需求,以下是两种简洁的MySQL语句写法:
写法一:使用CASE表达式(兼容性更强)
SELECT CASE WHEN id IN (1, 2) THEN 'special' ELSE CAST(id AS CHAR) END AS type, SUM(amount) AS total_amount FROM test_table GROUP BY CASE WHEN id IN (1, 2) THEN 'special' ELSE CAST(id AS CHAR) END;
写法二:使用MySQL原生IF函数(更简洁)
SELECT IF(id IN (1, 2), 'special', id) AS type, SUM(amount) AS total_amount FROM test_table GROUP BY type;
逻辑说明
- 分组标记:通过
CASE或IF将id为1、2的记录统一标记为special,其他id保留原数值(MySQL会自动将数值类型的id转换为字符串,保证和special的类型一致) - 聚合求和:按标记后的
type字段分组,对每组的amount执行SUM()求和,得到最终的total_amount
验证结果
执行上述语句后,将得到符合需求的结果:
type | total_amount ------------------------------- special | 50 3 | 40 4 | 10
内容的提问来源于stack exchange,提问作者Ben Jong
相关产品推荐
相关产品推荐

