MySQL:在更新查询中基于SUM计算

时间:2014-09-19 01:20:35

标签: mysql sql

我的SQL表看起来像这样,它有大约500条记录,而volume_percentage当前是空的:

id  | volume | volume_percentage
--------------------------------
1   | 3151   | 0.00
2   | 832    | 0.00
3   | 39011  | 0.00
[..]
499 | 2311   | 0.00
500 | 1201   | 0.00

我想填充每条记录的volume_percentage字段。数量百分比应反映此记录与总数的百分比。

基本上是这样的:

volume_percentage = volume / SUM(volume) * 100;

使用PHP和500个查询的while循环使这很容易实现,但这对我来说听起来并不是最佳的(这是一个需要定期完成的过程,因为卷经常会发生变化)。有没有办法在纯SQL中执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用join和聚合:

执行此操作
update mytable t cross join
       (select sum(volume) as sumvolume
        from mytable
       ) s
    set volume_percentage = 100 * volume / s.sumvolume;