我的Rails应用程序我想渲染一个以最近的帖子为孩子的博客块。然而问题本身并不是特定于Rails的,看到普通的SQL答案会很好。
数据结构是:
posts
表,blogs
表; blogs
有blogs.id
而posts
通过外键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
时,我得到了正确的排序,但后来我在结果中有重复的帖子。
我知道我正在使用错误的方法完成这项任务......但是正确的方法是什么?
提前致谢!
答案 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`