MySQL Leaderboard view

У меня есть таблица со следующими данными

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 ответа

Это хак, но как два отдельных запроса:

select @last:=0;

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

Да, это можно сделать одним запросом

select user_id, 
       revenue, 
       @rank := rank + 1 as rank
from your_table, (select @rank := 0) r
order by revenue desc
Другие вопросы по тегам