帮助SQL查询
问题描述:
我有以下表博客(ID)和帖子(ID,blog_id,comment_count) 我需要从不同的博客中选择五个最多评论的职位。使用函数很容易,但是可以使用某种基本的SQL吗?帮助SQL查询
下面是在SQL Server方言
select top 5 top_post.* from Blogs b
cross apply
(select top 1 * from Posts p
where p.blog_id = b.id
order by p.comment_count) top_post
order by top_post.comment_count
答
SELECT b.*, c.num_comments
FROM
(
SELECT TOP 5 blog_id, SUM(comment_count) as num_comments
FROM posts GROUP BY blog_id ORDER BY SUM(comment_count) DESC
)c
INNER JOIN Blogs b ON (b.id = c.blog_id)
UPDATE查询希望这是你所需要的。虽然它不是很快。
SELECT b.*, c.comment_count
FROM
(SELECT blog_id, comment_count ,
ROW_NUMBER() OVER(PARTITION by blog_id ORDER BY comment_count DESC) as rnum
FROM posts
)c
INNER JOIN Blogs b ON (b.id = c.blog_id)
WHERE c.rnum <=5;
实际上,您需要5个博客,并且我认为有顶级评论文章吗? – 2011-02-28 09:21:05