Я хочу что-то вроде 9gag или reddit.
SELECT *
FROM topic
WHERE somecondition
ORDER BY posted_time DESC, number_of_likes DESC?
У меня есть количество лайков, количество избранных и количество комментариев. Я также хотел бы, чтобы этот алгоритм популярности использовался не более чем для 30 горячих тем в день, и, если для этого дня не было никакой темы, автоматически переходить на следующий день и давать мне популярные темы и так далее. Как это возможно?
Вы можете добавить к своему утверждению в конце «LIMIT 30», что ограничит результаты до 30 и даст вам темы в соответствии с вашим порядком в запросе.
Итак, ваш запрос должен выглядеть так:
SELECT *
FROM topic
WHERE somecondition
ORDER BY posted_time DESC, number_of_likes DESC LIMIT 30
Кроме того, имейте в виду, что если все ваши темы хранятся с указанным временем, маловероятно, что у вас будет несколько тем одновременно, а это означает, что лайки не будут влиять. Если вы хотите заказать его по дням, а затем по лайкам, возможно, измените запрос на ORDER BY DATE(posted_time)
Других решений пока нет …