Mysql Update column with percentage from other tables

标签 mysql inner-join

我目前还在学习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/

相关文章:

python - Django 中两个不直接相关的模型的内连接

带有 WHERE 子句的 SQL INNER JOIN 到 LINQ 格式

python - 是否可以仅使用 ftp 在 django 上运行脚本?

mysql - 使用基于另一个表的条件更新一组列?

php - MySQL 排序 3 列

mysql - 如何通过sql查询有效检查记录是否存在?

带有 LIMIT 按降序排列的 MySQL 查询不适用于内部联合表

mySQL 多重 INNER JOIN

mysql - 您如何确定服务器所需的硬件?

mysql - SQL IF 表 A 是表 B 的空复制列