MySQL按Order列分组求和并填充至同组所有行Total列的查询方法
MySQL实现同分组内Total字段统一赋值为组内合计值的解决方案
注意事项
Order属于MySQL保留关键字,D.O包含特殊字符,查询时均需要用反引号包裹避免语法报错,以下示例中所有你的表名请替换为实际的表名。
方案1:仅查询得到预期结果(不修改原表数据)
MySQL 8.0+ 版本(支持窗口函数,写法更简洁)
SELECT `Order`, `D.O`, Cost, Maintenance, SUM(Cost + Maintenance) OVER (PARTITION BY `Order`) AS Total FROM 你的表名;
MySQL 5.x 版本(无窗口函数支持,用关联子查询实现)
SELECT t1.`Order`, t1.`D.O`, t1.Cost, t1.Maintenance, t2.group_total AS Total FROM 你的表名 t1 INNER JOIN ( SELECT `Order`, SUM(Cost + Maintenance) AS group_total FROM 你的表名 GROUP BY `Order` ) t2 ON t1.`Order` = t2.`Order`;
方案2:直接更新原表的Total字段值
如果需要将计算结果写入原表的Total字段,可使用以下更新语句:
UPDATE 你的表名 t1 INNER JOIN ( SELECT `Order`, SUM(Cost + Maintenance) AS group_total FROM 你的表名 GROUP BY `Order` ) t2 ON t1.`Order` = t2.`Order` SET t1.Total = t2.group_total;
内容的提问来源于stack exchange,提问作者Imam
相关产品推荐
相关产品推荐

