我想基于2列计算平均值,并希望将值保存在新列中。此外,我想创建列平均值,因为它尚不可用。
UPDATE SCORE
SET Average=
'SET @v1 := (SELECT sum(runs) FROM `score`),
SET @v2 := (SELECT count(inning) FROM `score` WHERE inning = 'out'),
SELECT @v1/@v2'
答案 0 :(得分:0)
正如@TimBiegeleisen指出的那样,通常最好不要存储计算值,使用查询(或视图)来动态计算这些值。
在这个特定示例中,我不会存储计算值,因为它基于摘要,因此您甚至无法将数据与任何记录相关联。
我不知道你为什么要在准备好的声明中这样做,所以我将给你一个简单的sql解决方案,你可以作为预备语句执行。您不必使用单独的SET
语句为会话变量赋值,您可以在单个select
中执行这些操作。我使用子查询来确保在平均计算之前执行求和和计数。我使用条件计数来避免另一个子查询:
select sum_runs/count_outs as average
from (select sum(runs) as sum_runs,
count(if(inning='out',1,null)) as count_outs,
from `score`) as t