@svirepui

Как получить позицию пользователя относительно запроса SQL?

Есть таблица пользователей users, в ней столбец rating. Суть в том, что я хочу отсортировать список пользователей по рейтингу, т.е. получается такое:
1. Вася (рейтинг - 1000)
2. Петя (рейтинг - 500)
n. Коля (рейтинг - 50)
... Саша (рейтинг - 0)

Как можно получить позицию n пользователя в этом списке?

P.S. Пытался сделать так
SELECT COUNT(rating) position FROM users WHERE id = $this->id ORDER BY rating DESC
, но это не то. Количество записей не известно.
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
Если надо вывести первые N записей рейтинга, то запрос такой (для N = 10):
SELECT @n:=@n+1 AS nn, u.*
FROM users u JOIN (SELECT @n:=0)
ORDER BY u.rating DESC
LIMIT 10

Если просто надо вывести данные пользователя, находящегося на N-ом месте в рейтинге, то запрос такой (для N = 5):
SELECT * FROM users ORDER BY rating DESC LIMIT 5, 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы