2015-11-29 22 views
2

说,我想创建一个表像下:如何根据另一列的值做出排名列?

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

究竟如何创建一个rank列在它与记录与score新条目更新?

+1

可能的重复[排序功能在MySQL中与秩序子句](http://stackoverflow.com/questions/10881990/rank-function-in-mysql-with-order-by-clause) – lad2025

+4

通常,你wouldn 't将此存储在数据库中 – Strawberry

+0

@Strawberry我该怎么做呢? – Bango

回答

1

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

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

注:此实现了“排名”按大多数的数据库提供的rank()窗口功能。

相关问题