2014-09-19 64 views
0

我的SQL表看起來像這樣,它有大約500記錄和volume_percentage目前是空的:MySQL的:在更新查詢基礎上求和計算

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

您可以用join和聚集做到這一點:

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