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