从MySql中最近的一些匹配中获得玩家的总分

时间:2017-07-20 17:34:44

标签: mysql database xampp

我名为match_info的MySql表大致如下所示 -

    match_no | player_id | score

       1     |  1        |  50
       1     |  2        |  12
       2     |  1        |  10
       2     |  2        |  14
       3     |  1        |  11
       3     |  2        |  30

实际表包含的数据远多于此数据。无论如何,为了举例,我们可以说这是现在的表。我想要的是找到每个球员的最终得分数。例如,现在说我只需要计算最近的两场比赛。所以只匹配否。应计算3和2,我的输出应为 -

player_id |  score
  2       |   44
  1       |   21

我该怎么做? 我尝试了以下内容 -

SELECT player_id,SUM(score) as total_score 
FROM  match_info 
where match_no IN
(select match_no 
from match_info 
ORDER BY match_no DESC LIMIT 2)
group by player_id 
order by total_score desc;

然而我遇到的错误是 -

  

此版本的MariaDB尚未支持限制& amp; IN / ALL / ANY / SOME子查询'

所以我不能在" IN"内部使用限制。子查询。我可以使用哪种替代方法?

2 个答案:

答案 0 :(得分:1)

尝试使用此查询,它按预期工作。

SELECT player_id, SUM(score) FROM match_info m1 INNER JOIN (SELECT DISTINCT match_no FROM match_info ORDER BY match_no DESC LIMIT 2) m2 ON m1.`match_no` = m2.match_no GROUP BY `player_id` ORDER BY `player_id`

答案 1 :(得分:0)

您可以尝试加入" vs一个包含您想要比较的值的临时表,这将允许更多的查询优化。