MySQL排行榜视图

时间:2013-11-18 20:47:34

标签: mysql view leaderboard

我有一张包含以下数据的表

USER_ID | REVENUE
1  | 12,545
2  | 9,845
3  | 55,874

我是否有办法在视图中即时创建排名结果,即

USER_ID | REVENUE | RANK
3  |   55,874  |  1
1  |   12,545  |  2
2  |   9,845   |  3

我可以通过运行cron来尝试这样做,但希望结果是实时的 - 由MySQL在视图中生成。

欢迎任何其他选择。

2 个答案:

答案 0 :(得分:0)

这是一个黑客,但作为两个单独的查询:

select @last:=0;

select USER_ID, REVENUE, @RANK := @RANK + 1 as RANK
from YOURTABLE
order by ...

答案 1 :(得分:0)

是的,可以在一个查询中完成

select user_id, 
       revenue, 
       @rank := rank + 1 as rank
from your_table, (select @rank := 0) r
order by revenue desc