我目前还在学习mysql,如果我做错了什么,请原谅我。
出于学习目的,我正在制作一个我玩的游戏的统计数据数据库。我写了一个脚本来解析网站的数据,然后根据季节将数据上传到mysql。然后我有一个用于数据聚合的总计表。
但是我不知道如何制作一个列来显示球员与上赛季相比的进步(在我的示例中,第 12 赛季是当前赛季)。
我试过了,但是查询花费的时间太长了,由于不耐烦,我一直没能看到结果,事实上我读到子查询效率低下,我应该避免使用它们。
update totals
set `Season Performance` =
(select round((season12.`Average Match Score` / season11.`Average Match Score`) * 100)
from season12,season11
where totals.`Pilot Name` = season12.`Pilot Name` AND season11.`Pilot Name` = season12.`Pilot Name` LIMIT 1);
目标是通过检查第 11 赛季和第 12 赛季的球员出场情况,然后给出表现,用姓名总数更新表格。
但是总计是所有赛季的,所以有些球员不在第 11 或 12 赛季。
最佳答案
而不是像那样的子查询,我会像这样重写它(未测试语法):
UPDATE totals INNER JOIN
(
SELECT season12.`Pilot Name`, ROUND((season12.`Average Match Score` / season11.`Average Match Score`) * 100) AS the_perc
FROM season12 INNER JOIN season11 ON season11.`Pilot Name` = season12.`Pilot Name`
) a ON totals.`Pilot Name` = a.`Pilot Name`
SET totals.`Season Performance` = a.the_perc
并确保在 Pilot Name
上有一个索引
关于Mysql Update column with percentage from other tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45089050/