MySQL总和更新

时间:2013-09-06 02:07:51

标签: mysql join sql-update sum

SELECT id,100.0/(SELECT SUM(points) FROM data)*points AS reward,points FROM data;

我遇到的第一个问题是我认为运行内部选择这么多次没有效率,最好使用什么连接。

第二个问题是我使用生成的数据集生成数百个单独的更新查询,如何从一个查询中的select中更新?

UPDATE aggregate AS a SET a.reward=a.reward+data.reward
SELECT ...
WHERE a.dataid = data.id

1 个答案:

答案 0 :(得分:1)

第一个问题的答案是将查询移到from子句。

您的第二个答案是在join中执行update查询:

UPDATE aggregate a join
   (SELECT id, 100.0/sump*points AS reward, points
    FROM data cross join
         (SELECT SUM(points) as sump
          FROM data
         ) const
   ) ds
   on a.dataid = ds.id
SET a.reward = a.reward + ds.reward;