WITH RankedMessages AS (
SELECT
n.id,
n.id_u,
n.time,
n.title_prev,
ROW_NUMBER() OVER (PARTITION BY n.id_u ORDER BY n.time DESC) AS rn
FROM
indexnews n
WHERE n.approve = 1
)
SELECT
id,
id_u,
time,
title_prev
FROM
RankedMessages
ORDER BY
rn, time DESC, id_u
В mysql, вытаскиваем по 1 последней записи от каждого пользователя, как все уникальные публикации по 1 на одного пользователя достали. Выстраиваем таким образом, чтобы сперва было чередование.
- Не должно получиться так, что 2 и более новости подряд были от одного пользователя
- Допускается по 2 и более подряд, когда у других пользователей больше нет публикаций. Чем ближе конец, тем чаще будут чередоваться новости от одних и тех же пользователей.
Попробовал выполнить тоже самое с мантикоре, ничего не вышло. Попытался с нейросетью, множество вариантов. Ничего не выходит…
Может кто подскажет какой лучше вариант реализации подобного?
- Сортировка по времени от большего к меньшему
- Необходимо разбавить новости, чтобы избежать таких случаев когда идут подряд публикации от одгого пользователя. Исключение тогда, когда публикаций от других пользователей нету.