Я бы лично сделал это, добавив поле sort_index в таблицу со значением по умолчанию, например, равным 100. Затем вы можете перемещать сообщения вниз, уменьшая их порядок сортировки, или увеличивать их, увеличивая. Начиная с определенного числа, вы устанавливаете базовую линию для сортировки сообщений по умолчанию.
SELECT * FROM `posts` ORDER BY sort_index DESC, date_posted DESC
Это будет использовать гарантию того, что сообщения с одинаковым индексом сортировки получат вторичную сортировку на основе даты их публикации.
Это также позволяет вам легко автоматизировать спад постов в рейтингах с течением времени с помощью небольшого сценария, настроенного как хрон, чтобы время от времени уменьшать индекс сортировки постов, пока они не достигнут значения по умолчанию.