Я пытаюсь сделать оператор select, и он работает, за исключением того, что он не ограничивает количество результатов для каждого пользователя (U.id) до 5.
SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image
FROM favorites AS F
INNER JOIN users AS U
ON F.faver_profile_id = U.id
INNER JOIN items AS I
ON F.notice_id = I.id
WHERE faver_profile_id IN ('.$users.')
GROUP BY I.id HAVING COUNT(U.id) <= 5
ORDER BY F.faver_profile_id, F.created DESC
Я группирую по I.id для устранения дубликатов. Из моего исследования видно, что вы можете использовать HAVING COUNT, только если вы также группируете по этому столбцу, но я не могу сгруппировать по U.id, иначе я потеряю строки результатов.