我有一个通用的问题,我将尝试使用一个例子来解释.
假设我有一个包含字段的表:"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
)
Run Code Online (Sandbox Code Playgroud)
但MySQL不接受更新列中的别名T,我没有找到实现此目的的其他方法.
有任何想法吗?
我有两张桌子:
我希望将每个剧集的表1的代码复制到表2.目前执行此操作的代码如下:
UPDATE Table2
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode)
Run Code Online (Sandbox Code Playgroud)
这需要数小时和数小时.(我不确切知道多少小时,因为我在大约20小时的时候取消了它.)他们是大桌子,但肯定有更快的方法吗?