我有一张包含以下数据的表
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在视图中生成。
欢迎任何其他选择。
答案 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