2011-02-02 104 views
0

为了让事情更容易理解,我们举一个例子: 我想只显示特定帖子的前5条评论(就像facebook上的帖子,人们不能评论他们) 。我怎么能这样做在SQL如果,如果我尝试select top 5 tblComment.id...它将只返回5个结果,而不是所有的职位只有一个最高每帖5评论借此查询SQL分组 - 每个帖子只显示5条评论

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

+0

得到例如2个tblPosts并为每个5条的评论,你将与此查询的问题,因为这会我认为不行。你需要使用JOIN来完成这个 – Luke 2011-02-02 18:51:37

回答

2
select 
    * 
FROM 
    tblPost P 
    OUTER APPLY 
    (SELECT TOP 5 * FROM tblComment C 
     WHERE P.id = C.postid 
     ORDER BY something) inline 
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 
相关问题