Если я правильно вас понимаю, вы хотите, чтобы не более 10 сообщений (и 2 комментариев) возвращались для каждого уникального пользователя в возвращенном наборе результатов.
Это очень просто в SQLServer / Oracle / Postgre, используя "row_number () PARTITION BY".
К сожалению, в MySql такой функции нет. Подобный вопрос был задан здесь:
ROW_NUMBER () в MySQL
Извините, я не могу предложить более конкретное решение для MySql. Определенно дальнейшее исследование "разделение номера строки по" эквивалентам для MySql.
Суть того, что это делает:
Вы можете добавить набор столбцов, которые составляют уникальный набор, скажем, идентификатор пользователя, например, ради (это «раздел»). Затем в каждую строку, которая соответствует разделу, добавляется столбец «номер строки» и начинается заново. когда это изменится.
Это должно проиллюстрировать:
user_id row_number
1 1
1 2
1 3
2 1
2 2
Затем вы можете добавить внешний запрос, который говорит: выберите где row_number <= 10, который может использоваться в вашем случае, чтобы ограничить не более 10 сообщений. Использование max row_number для этого пользователя для определения части «прочитать все 10 комментариев». </p>
Удачи!