@driverx18

Как выбрать для каждой статьи по 5 комментариев в одной выборке?

Нужно выбрать по 5 комментариев для каждой статьи. Т.е. если у статьи 44 есть допустим 10 комментов, то нужно в выборке вернуть для данной статьи только 5. И так для каждой статьи в выборке. Понятное дело, что просто LIMIT 5 в конце не поможет, и вернет просто первых 5 комментов не в зависимости от статьи. Как я понимаю,нужно делать какой-то подзапрос?
SELECT `c`.*
FROM comments AS `c` WHERE `c`.`articleId` IN (
     '44',
     '55',
     '414',
     '555',
     '775'
) AND `c`.`approved` ='1' ORDER BY `c`.`date` DESC;
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@MaximaXXl
Если бы Вы показали тут таблицу и связку в которой находятся эти "коментарии", было бы проще. А так ...
select *
from (SELECT `c`.*, row_number() OVER (partition by `c`.`articleId` order by `c`.`date` DESC ) rn
FROM comments AS `c` WHERE `c`.`articleId` IN (
     '44',
     '55',
     '414',
     '555',
     '775'
) AND `c`.`approved` ='1' ORDER BY `c`.`date` DESC) t1 
where rn <= 5;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы