如何选择按created_at desc排序的列分组的所有记录。
我可能想要检索每篇文章的所有最新评论。无论我做什么,小组(:article_id)都将返回最早的评论。
祝你好运。 AsbjørnMorell
答案 0 :(得分:16)
类似的东西:
Comment.order('created_at DESC').all
应该这样做:)
如果您只想获得第一个结果,请使用first
代替all
。
您也可以使用limit
。例如,获得第一个结果:
Comment.order('created_at DESC').limit(5).all
答案 1 :(得分:3)
对于SQL,您将找不到简单的答案 - 组在排序之前发生(因为组通常用于聚合数据)。只需在文章记录中保留latest_comment_id
字段,然后在找到文章时加入对latest_comment_id的评论。
如果您希望每篇文章有多个评论,那么您将不得不求助于使用多个查询,或者只使用每篇文章的最新评论来维护临时表。
答案 2 :(得分:1)
Comment.group(:article_id).order('created_at DESC')