SQL查询:从不同的博客中选择评论最多的五篇文章
我有以下表格Blogsid和Postsid、blog\u id、comment\u count 我需要从不同的博客中选择五篇评论最多的帖子。使用函数很容易,但是可以使用某种基本的SQL吗 下面是SQL Server方言的查询SQL查询:从不同的博客中选择评论最多的五篇文章,sql,Sql,我有以下表格Blogsid和Postsid、blog\u id、comment\u count 我需要从不同的博客中选择五篇评论最多的帖子。使用函数很容易,但是可以使用某种基本的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_coun
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.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;
据我所知,没有标准的方法来实现selecttop,这实际上是由主要的dbms支持的
请看我想你真的需要五个博客,上面都是评论最多的帖子?@synapse:oops。我的错:我又误解你了:是的,看起来窗口功能完成了任务。我认为除了MySQL之外,所有主要的数据库都实现了它们。
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;