在Sql Server数据库中,我有一个表,其中包含用户得分的列:
我想创建一个获取用户排名的查询,例如,如果输入为“user4”,我将获得1,如果输入为“user2”,我将获得5等。
我在MySql中编写了这样的查询,但现在我需要在SQL server中实现它。
答案 0 :(得分:3)
您想使用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;
答案 1 :(得分:0)
select rank
from
(
select username, rank() over (order by score desc) as rank
from table
) t
where username = 'user4'