0

在我的 Rails 应用程序中,我想渲染一个博客块,其中包含最新的帖子作为它们的子级。然而,问题本身并不是 Rails 特有的,可以看到纯 SQL 的答案。数据结构为: poststable、blogstable;blogs同时通过外键引用它们blogs.id。我正在尝试做的事情:postsposts.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从查询中删除时,我得到了正确的排序,但是结果中有重复的帖子。我知道我在执行这项任务时使用了错误的方法……但是正确的方法是什么?

提前致谢!

4

1 回答 1

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`
于 2013-02-14T15:41:29.033 回答