Как узнать порядковый номер строки при сортировке?

Есть посты, у каждого поста есть рейтинг. Возможно ли узнать позицию поста в топе, зная только его рейтинг? Что-то вроде, отсортировать по рейтингу и выдернуть позицию в этой сортировке по id поста.
  • Вопрос задан
  • 3215 просмотров
Решения вопроса 1
akashtrih
@akashtrih
Посчитать количество строк, рейтинг которых больше заданного (если в топе записи с самым большим рейтингом).
SELECT COUNT(*) 
FROM `posts` 
WHERE `rating` > (
    SELECT `rating` 
    FROM `posts` 
    WHERE `id` = 42
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SET @Couner = 0;
SELECT @Counter := @Counter + 1, * FROM table;

А потом из получившийся таблицы выбираем позицию по рейтингу.

087e36c77b0b46c49617664a74c3e84b.png6555104899e84a16a073ccf8ebfa439b.png
Ответ написан
Комментировать
Узнать позицию поста в топе, у которого рейтинг 100:
SELECT COUNT(*) FROM `posts` WHERE `rating` >= 100
Выдернуть пост по id:
SELECT* FROM `posts` WHERE `id` IN(SELECT COUNT(*) FROM `posts` WHERE `rating` >= 100)

Возможна проблема, если существует несколько постов с рейтингом 100...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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