我有一个网站收集游戏的高分 - 侧边栏显示最新的10个分数(不一定是最高分,只是最新的10分).但是,由于用户可以快速玩多个游戏,因此他们可以控制最新的10个列表.如何编写一个SQL squery来显示最后10个分数,但是将其限制为每个用户一个?
SELECT username, max(score)
FROM Sometable
GROUP BY username
ORDER BY Max(score) DESC
Run Code Online (Sandbox Code Playgroud)
从中,根据您的数据库平台选择前X名.在ms-sql 2005+中选择top(10)
编辑
对不起,我看到你想要按日期订购的东西.
这是一个使用ms-sql 2005的工作查询.
;
WITH CTE AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY username ORDER BY dateadded DESC) AS 'RowNo',
username, score, dateadded FROM SomeTable
)
SELECT username, score, dateadded FROM CTE
WHERE RowNo = 1
Run Code Online (Sandbox Code Playgroud)