我想找到不同的方法来解决我遇到的现实生活问题:想象一下进行一场比赛或一场游戏,在此期间用户收集积分。您必须构建一个查询来显示具有最佳“n”分数的用户列表。
我举一个例子来澄清。假设这是用户表,其中包含获得的积分:
UserId - Points
1 - 100
2 - 75
3 - 50
4 - 50
5 - 50
6 - 25
如果我想要前 3 个分数,结果将是:
UserId - Points
1 - 100
2 - 75
3 - 50
4 - 50
5 - 50
这可以根据需要在 View 或存储过程中实现。我的目标数据库是Sql Server。实际上我解决了这个问题,但我认为有不同的方法来获得结果......比我的更快或更有效。
最佳答案
未经测试,但应该可以工作:
select * from users where points in
(select distinct top 3 points from users order by points desc)
关于SQL 查询从列表中获取最高 "n"分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743/