SQL分组 - 每篇文章仅显示5条评论

时间:2011-02-02 18:48:17

标签: sql tsql sql-server-2008

为了让事情更容易理解,我们举个例子: 我想只显示特定帖子的前5条评论(就像Facebook上的帖子,人们不能评论它们)。如果您采用此查询,我怎么能在SQL中执行此操作

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

如果我尝试select top 5 tblComment.id...,它将只返回5个结果而不是所有帖子,每个帖子最多只有5条评论。

2 个答案:

答案 0 :(得分:2)

select
   *
FROM
   tblPost P
   OUTER APPLY
   (SELECT TOP 5 * FROM tblComment C  
      WHERE P.id = C.postid
      ORDER BY something) inline

答案 1 :(得分:1)

尝试使用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