我有一个通用的问题,我将尝试使用一个例子来解释。
假设我有一个表,其中包含字段:"id"、"name"、"category"、"appearances"和"ratio"
我的意思是,我有多个项目,每个项目都与一个单一的类别相关联,并且会出现多次。比率字段应该包括每个项目出现在类别中的出现次数占所有项目出现次数的百分比。
用伪代码表示,我需要以下内容:
对于每个类别
找到与之相关的项目的出现总和。例如,可以通过 (select sum("appearances") from table group by category
) 完成。对于每个项目
将比率值设置为该项目的出现次数除以上述类别发现的总和
现在我正在尝试使用单个更新查询实现此目的,但似乎无法做到。我认为我应该做的是:
update Table T
set T.ratio = T.appearances /
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
但是MySQL不接受在更新列中使用别名T,我也没有找到其他实现这一点的方法。有什么想法吗?