在我的表“game_info”中有
ID | player_1 | player_2 | score
--------------------------------
1 | John | Rick | 100
2 | Joe | John | 80
3 | Bob | Rick | 210
我想计算每个玩家的总分,无论他们是 player_1 还是 player_2,并按分数排序。
我期望的是:
Name | Score
------------
Rick | 310
Bob | 210
John | 180
Joe | 80
我试过 JOIN 和 UNION,但我做对了。
有没有办法在 sql 中执行此操作,或者我必须重新设计我的表?
谢谢!
最佳答案
您可以使用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;
关于MySQL 在两列中搜索值并求和第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48217231/