MySQL:从一个表中获取唯一的行,同时按另一个列进行排序

时间:2013-02-14 15:30:59

标签: mysql sql associations

我的Rails应用程序我想渲染一个以最近的帖子为孩子的博客块。然而问题本身并不是特定于Rails的,看到普通的SQL答案会很好。 数据结构是: posts表,blogs表; blogsblogs.idposts通过外键posts.blog_id引用它们。 我想做什么:

SELECT distinct blogs.id, blogs.* FROM `blogs` INNER JOIN `posts` ON `posts`.`blog_id` = `blogs`.`id` ORDER BY posts.created_at desc, posts.id desc LIMIT 5

但我得错误的顺序记录。当我从查询中删除distinct blogs.id时,我得到了正确的排序,但后来我在结果中有重复的帖子。 我知道我正在使用错误的方法完成这项任务......但是正确的方法是什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个

SELECT blogs.* 
FROM `blogs` 
INNER JOIN 
(
select distinct blog_id
from posts
ORDER BY posts.created_at desc, posts.id desc 
LIMIT 5
) p ON p.`blog_id` = `blogs`.`id`