在sql中,如何根据另一列的值创建排名列?

时间:2015-11-29 22:23:12

标签: mysql sql

说我希望创建一个如下表格:

user   score   rank
a      100     2   
b      200     1
c      50      3
d      50      3

我究竟如何创建rank列,并使用score的新记录条进行更新?

1 个答案:

答案 0 :(得分:1)

对于小表,最简单的方法是相关子查询:

select t.*,
       (select 1 + count(*)
        from t t2
        where t2.score > t.score
       ) as rank
from t 
order by score desc;

注意:这根据大多数数据库中可用的rank()窗口函数实现“排名”。