SQL查询:从不同的博客中选择评论最多的五篇文章

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

我有以下表格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_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;