我正在尝试为视频游戏创建一个高分板。
有一个users
表:
还有一张scores
桌子:
我试过使用这个查询:
SELECT MAX(`scores`.`score`) AS max_score,
`scores`.`team`,
`users`.`name`
FROM `scores`
LEFT JOIN `users`
ON `users`.`id` = `scores`.`user_id`
GROUP BY `scores`.`user_id`
ORDER BY max_score DESC
LIMIT 50
返回此结果(示例):
如您所见, userFUNTIMES
的得分210
被归因于根据表格eagles
应该归因于的时间( 's是 11)。vikings
scores
FUNTIMES
user_id
我将如何解决这个问题?像这样的东西会很好地工作:
SELECT `scores`.`score`, `scores`.`team`, `users`.`name`
FROM `scores`
LEFT JOIN `users`
ON `users`.`id` = `scores`.`user_id`
WHERE `scores`.`id` IN (
SELECT MAX(`scores`.`score`)
FROM `scores`
GROUP BY `scores`.`user_id`
)
ORDER BY `scores`.`score` DESC
LIMIT 50
但是,当然,我不能选择 WHERE id
is IN score
。我完全迷路了。
提前感谢您的帮助。
编辑:对不起,我忘了提:每个用户只能在高分表中显示一次。(这就是为什么我的user_id
查询中有 GROUP BY 规定的原因。)