说我希望创建一个如下表格:
user score rank
a 100 2
b 200 1
c 50 3
d 50 3
我究竟如何创建rank
列,并使用score
的新记录条进行更新?
答案 0 :(得分:1)
对于小表,最简单的方法是相关子查询:
select t.*,
(select 1 + count(*)
from t t2
where t2.score > t.score
) as rank
from t
order by score desc;
注意:这根据大多数数据库中可用的rank()
窗口函数实现“排名”。