SQL группировка - показывать только 5 комментариев на пост - PullRequest
0 голосов
/ 02 февраля 2011

Чтобы упростить понимание, возьмем следующий пример: Я хочу показать только топ-5 комментариев для определенного поста (например, пост на Facebook, где люди не могут их комментировать). Как я могу сделать это в SQL, если вы берете этот запрос

select tblPost.id,tblComment.id
from tblComment,tblPost
where tblPost.id = tblComment.postid

если я попытаюсь select top 5 tblComment.id..., он вернет только 5 результатов, а не все посты с максимум 5 комментариями на пост.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011
select
   *
FROM
   tblPost P
   OUTER APPLY
   (SELECT TOP 5 * FROM tblComment C  
      WHERE P.id = C.postid
      ORDER BY something) inline
1 голос
/ 02 февраля 2011

Попробуйте использовать ROW_NUMBER, при условии, что вы используете базу данных, которая поддерживает его:

SELECT id, postid
FROM tblComment
(
    SELECT 
        id,
        postid,
        ROW_NUMBER() OVER (PARTITION BY postid ORDER BY id DESC) AS rn
    FROM tblComment
) AS T1
WHERE rn <= 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...