如何使用 ActiveRecord 在 MySQL 中查找不同用户的最新访问
尝试使用 DISTINCT ON 函数时遇到语法错误ActiveRecord 中的 MySQL?解决方案如下:
初始查询:
Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')
返回错误,因为 MySQL 不支持 DISTINCT ON。相反,您可以使用 GROUP BY 和 MAX 的组合来实现所需的结果。
修改后的查询:
Events.group(:user_id).maximum(:time)
此查询将按 user_id 对事件进行分组,并查找最长时间每个组,有效地为您提供每个不同用户的最新访问。
预期输出:
{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}
请注意,时间戳格式可能会根据您的数据库配置而有所不同.
以上是如何使用ActiveRecord查找MySQL中每个用户的最新访问情况?的详细内容。更多信息请关注PHP中文网其他相关文章!