Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用mysql显示每个用户的最高分数_Mysql_Sql_Database - Fatal编程技术网

如何使用mysql显示每个用户的最高分数

如何使用mysql显示每个用户的最高分数,mysql,sql,database,Mysql,Sql,Database,假设我有一个包含两个表的数据库。包含ID、名字和姓氏的“用户”表。以及包含ID、分数和用户ID(与用户表中的ID相同)的“游戏”表 我只想得到玩过游戏的每个用户的最高分数。我想显示如下内容: Jane | Doe | 20 Sam | Mills | 22 使用mysql,我如何实现这一点?我还需要考虑到“游戏”表中没有Joe Smith(userID=1)的记录吗 谢谢任何能帮忙的人 您可以使用聚合

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

我只想得到玩过游戏的每个用户的最高分数。我想显示如下内容:

                      Jane |  Doe  | 20
                      Sam  | Mills | 22
使用mysql,我如何实现这一点?我还需要考虑到“游戏”表中没有Joe Smith(userID=1)的记录吗


谢谢任何能帮忙的人

您可以使用聚合和加入:

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

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

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


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

如何识别游戏?
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