mysql两列搜索值和第三列求和

siv3szwd  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(214)

在我的“游戏信息”表中

ID | player_1 | player_2 | score
--------------------------------
1  | John     | Rick     | 100
2  | Joe      | John     |  80 
3  | Bob      | Rick     | 210

我想为每个球员的总得分,无论他们是球员1或球员2和秩序的分数。
我期望的是:

Name | Score
------------
Rick | 310
Bob  | 210
John | 180
Joe  |  80

我试过加入工会,但做不好。
有没有办法在sql中实现这一点,或者我必须重新设计我的表?
谢谢您!

uttx8gqw

uttx8gqw1#

SELECT player, SUM(score)
FROM
(SELECT player_1 AS player, score
 FROM t
 UNION ALL
 SELECT player_2 as player, score
 FROM t) sub
GROUP BY player

你必须将玩家1的结果和玩家2的结果结合起来,这样你就只有一个玩家和分数的结果了。当然,分数会在这个视图中列出两次,每个玩家一次。在我的查询中,结果被称为sub。根据sub,你可以按玩家分组并计算他们的分数。

cngwdvgl

cngwdvgl2#

你可以这样做 union all 以及 group by :

select player, sum(score)
from ((select player1 as player, score from game_info
      ) union all
      (select player2 as player, score from game_info
      )
     ) p
group by player
order by sum(score) desc;

相关问题