gpt4 book ai didi

ruby-on-rails - 选择具有最新创建日期的唯一记录

转载 作者:行者123 更新时间:2023-11-29 11:25:11 25 4
gpt4 key购买 nike

| id    | user_id | created_at (datetime) |
| 1 | 1 | 17 May 2016 10:31:34 |
| 2 | 1 | 17 May 2016 12:41:54 |
| 3 | 2 | 18 May 2016 01:13:57 |
| 4 | 1 | 19 May 2016 07:21:24 |
| 5 | 2 | 20 May 2016 11:23:21 |
| 6 | 1 | 21 May 2016 03:41:29 |

如何获取唯一且最新的 created_at user_id 记录的结果,在上述情况下将是记录 id 5 和 6?

到目前为止我尝试了什么

到目前为止,我正在尝试使用 group_by 返回这样的散列:

Table.all.group_by(&:user_id)

#{1 => [record 1, record 2, record 4, record 6], etc}

然后从中选择最大日期的记录?谢谢。

更新的解决方案

感谢 Gordon 的回答,我正在使用 find_by_sql 在 ror 中使用原始 sql 查询。

@table = Table.find_by_sql("Select distinct on (user_id) *
From tables
Order by user_id, created_at desc")

#To include eager loading with find_by_sql, we can add this

ActiveRecord::Associations::Preloader.new.preload(@table, :user)

最佳答案

在 Postgres 中,您可以使用 DISTINCT ON:

SELECT DISTINCT ON (user_id) *
FROM tables
ORDER BY user_id, created_at DESC;

我不确定如何用 ruby​​ 表达它。

关于ruby-on-rails - 选择具有最新创建日期的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com