如何使用 ActiveRecord 检索 MySQL 中每个唯一用户的最近访问时间?

Susan Sarandon
发布: 2024-10-30 06:23:03
原创
387 人浏览过

How to Retrieve the Most Recent Visit Time for Each Unique User in MySQL with ActiveRecord?

在 ActiveRecord 中使用 DISTINCT ON 与 MySQL

处理大量数据时,通常需要在执行数据库操作时提取唯一信息。其中一种场景是识别每个不同用户的最新访问。

问题:

尝试使用 DISTINCT ON 检索每个唯一用户的最近访问时间语法时,遇到 ActiveRecord::StatementInvalid 错误。使用的查询是:

<code class="ruby">Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')</code>
登录后复制

解决方案:

DISTINCT ON 语法特定于 PostgreSQL,不适用于 MySQL。要使用 ActiveRecord 在 MySQL 中获得所需的结果,应修改查询:

<code class="ruby">Events.group(:user_id).maximum(:time)</code>
登录后复制

输出:

此修改后的查询将产生预期的输出,其中键代表唯一的用户 ID,值代表最近访问的时间:

{21=>Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23=>Thu, 20 Dec 2018 06:42:10 UTC +00:00}
登录后复制

以上是如何使用 ActiveRecord 检索 MySQL 中每个唯一用户的最近访问时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!