Rails Group、Order 和 Limit 在一张表 Active Records 中

Posted

技术标签:

【中文标题】Rails Group、Order 和 Limit 在一张表 Active Records 中【英文标题】:Rails Group, Order and Limit in one Table Active Records 【发布时间】:2021-11-18 07:16:57 【问题描述】:

我对 Rails 还很陌生,并尝试为 GraphQl 实现一个查询,我想通过一个 Active Record 查询从我的表(条目)中获取每个 feed_id 的 10 个最新条目(通过 published_at)。

我的模型如下所示:

class Entry < ApplicationRecord
    belongs_to :feed 

    "some methods"

end
class Feed < ApplicationRecord
    has_many :entries, dependent: :destroy
end

我的表格如下所示:

条目表:

id title published_at feed_id ......
1 title1 date1 1 ......
2 title2 date2 1 ......
3 title3 date3 2 ......
4 title4 date4 1 ......
N titleN dateN 3 ......

饲料表:

id (feed_id) url .....
1 url1 .....
2 url2 .....
3 url3 .....
4 url4 .....
N urlN .....

我已经在 *** 上针对类似问题尝试了不同的解决方案,但到目前为止没有任何结果,所以也许有人有提示?

【问题讨论】:

【参考方案1】:

试试这样的:

Entry.order(published_at: :desc).limit(10).group_by(&:feed_id)

谢谢!

【讨论】:

以上是关于Rails Group、Order 和 Limit 在一张表 Active Records 中的主要内容,如果未能解决你的问题,请参考以下文章

MySQL分组条件,group by order by limit 顺序

2018-07-10聚合函数+比较条件+''和NULL+DISTINCT+ORDER BY+LIMIT+GROUP BY

sql语句执行顺序之group by、order by

postgresql----排序ORDER BY,分组GROUP BY,分页OFFSET&&LIMIT

mysql中“group by、having、order by、limit”的顺序及用法是啥?

mysql中“group by、having、order by、limit”的顺序及用法是啥?