【问题标题】:How to display the highest score of each user with mysql如何用mysql显示每个用户的最高分
【发布时间】:2020-11-30 00:09:31
【问题描述】:

假设我有一个包含两个表的数据库。包含 ID、名字和姓氏的“用户”表。以及一个“游戏”表,其中包含一个 ID、分数和一个用户 ID(与用户表相同的 ID)。

-------------------------              ------------------------
ID | fName | lName                     ID | score | userID
-------------------------              ------------------------
1  |  Joe  | Smith                     1  |   20  |    2
2  |  Jane | Doe                       2  |   15  |    2
3  |  Sam  | Mills                     3  |   18  |    3
--------------------------          4  |   22  |    3

我只想获得每个玩过游戏的用户的最高分。我想显示这样的内容:

                      Jane |  Doe  | 20
                      Sam  | Mills | 22

使用mysql,我该如何实现呢?我还需要考虑“游戏”表中没有 Joe Smith (userID = 1) 的记录吗?

感谢任何可以提供帮助的人!

【问题讨论】:

  • 如何识别游戏?

标签: mysql sql database


【解决方案1】:

你可以使用聚合和join:

select u.fname, u.lname, gu.max_score
from (select userid, max(score) as max_score
      from games g               
      group by userid
     ) gu join
     users u
     on u.id = gu.userid

【讨论】:

    【解决方案2】:

    为此,您可以使用聚合函数和左连接:

    SELECT U.id, U.fname, U.lname,IFNULL(MAX(G.score),0) AS score FROM user AS U
    LEFT JOIN game AS G ON G.userID = U.id
    GROUP BY U.id, U.fname, U.lname
    

    我使用了左连接,所以如果游戏表没有任何用户记录,那么它将返回 0。

    这是DB FIDDLE 链接,您可以在那里查看相同的 Qry。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多