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