在 Sql Server 数据库中,我有一个表,其中有一列包含用户的分数:
我想创建一个查询来获取用户的排名,例如,如果输入是“user4”,我将得到 1,如果输入是“user2”,我将得到 5 等等。
我已经在MySql中编写了这样的查询,但现在我需要在SQL Server中实现它。
最佳答案
您想要使用 rank()
、row_number()
或 dense_rank()
。 SQL Server 提供以下功能:
select t.*, rank() over (order by score desc) as therank
from table t;
这三个函数之间的区别在于它们处理关系的方式。您的示例数据没有联系,因此它们都会返回相同的内容。
编辑:
对于特定用户,您可以使用子查询:
select therank
from (select t.*, rank() over (order by score desc) as therank
from table t
) t
where user = @user;
关于sql - 使用 SQL 获取用户排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683824/