首页  >  文章  >  数据库  >  如何使用 ActiveRecord 检索 MySQL 中每个唯一用户的最近访问时间?

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

Susan Sarandon
Susan Sarandon原创
2024-10-30 06:23:03388浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn