MySQL 在两列中搜索值并求和第三列

标签 mysql sql

在我的表“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 allgroup 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/

相关文章:

php - 在 Flot 中显示时间戳中的日期

php - 如何在 PDO 中使用数组插入/更新?

sql - 以 Oracle 10g 为中心

sql - SQLite:如何在数据库中的所有表中添加列?

mysql - 在 mysql 上使用 IN 而不是 OR 会影响性能

php - 如何使用 LIKE 和 OR 准备/执行 pdo?

sql - 如何使用 t-sql 更新 xml 变量中的 xml 属性值?

ios - NSPredicate 和 BEGINSWITH 与 CloudKit : Field value type mismatch

mysql - 在mysql中搜索相似的词

java - 使用 oracle 和 mysql 在数据库上进行多线程