MySQL中用SUM()填充item_quantiy_total列遭拒,求正确表达式
解决MySQL中设置列值为另一列总和的问题
直接使用SUM(item_quantity)会被拒绝,原因是聚合函数SUM()不能直接在UPDATE语句的SET子句中单独使用,它需要配合子查询或变量来获取全局总和。以下是两种可行的正确写法:
方法一:通过子查询获取全局总和
将整个表的item_quantity总和通过子查询计算后,赋值给item_quantiy_total列的所有行:
UPDATE table1 SET item_quantiy_total = (SELECT SUM(item_quantity) FROM table1);
方法二:先存总和到变量再更新
如果表数据量较大,先把总和存入变量可以避免重复计算,提升效率:
SET @total = (SELECT SUM(item_quantity) FROM table1); UPDATE table1 SET item_quantiy_total = @total;
额外说明
如果你的需求是按分组(比如某类别的总和)为每行赋值,需要结合JOIN和分组查询,示例如下:
UPDATE table1 t1 JOIN (SELECT group_col, SUM(item_quantity) AS group_total FROM table1 GROUP BY group_col) t2 ON t1.group_col = t2.group_col SET t1.item_quantiy_total = t2.group_total;
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

