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
答案 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;