排序表后如何获取行的位置?

时间:2016-09-14 16:55:59

标签: mysql sorting

我有一张这样的表

ID            TOTALMARKS
___           __________  
12            623
32            350
14            944
11            540
17            549

我想按照TOTALMARKS的降序对表的数据进行排序,然后在排序后我想得到特定ID的位置。

在这种情况下,944是ID 14的最高TOTALMARKS,因此它的位置将是第1位(排序后将位于顶部)。因此,我想要的是,只有在对TOTALMARKS进行排序后相应ID的位置。

在这里,当我想知道ID 17的位置时,我希望结果为3。

1 个答案:

答案 0 :(得分:0)

您可以使用子查询执行此操作:

select 1 + count(*)
from t
where t.marks > (select t2.marks from t where t2.id = 14);

注意:这实现了rank()的功能,因此具有相同marks值的ID获得相同的排名。并且,有漏洞(因此,分数为100,100,99给出1,1,2)。如果您不想要漏洞,请使用count(distinct marks)代替count(*)