0

我有一个包含每小时记录(跨越多天)的表。我想做的是获取每天的最后一个小时记录。

我在这里找到了 MySQL 解决方案:Retrieving the last record in each group(接受的答案对我来说看起来不错,或多或少有意义)

但是,我正在努力使用 Rails 查找器来实现这一点,因为不清楚如何在 Rails 中进行自我加入(所有文档都适用于关联)。

到目前为止,我已经尝试过这个......但无济于事(它说“id”列不明确)。

Report.joins("LEFT JOIN reports r2 ON (date('created_at') = date('r2.created_at') AND id < r2.id)").where("r2.id IS NULL")
4

1 回答 1

3

您可能只需要reports在 SQL 中显式引用您的表:

Report.joins("LEFT JOIN reports r2 ON (date('reports.created_at') = date('r2.created_at') AND reports.id < r2.id)").where("r2.id IS NULL")

对于实现此目的的更多“Railsey”方式,您可能需要查看finder_sql选项has_many并创建一个关联来执行此操作。

于 2012-04-20T13:58:48.323 回答