处理大量数据时,通常需要在执行数据库操作时提取唯一信息。其中一种场景是识别每个不同用户的最新访问。
问题:
尝试使用 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中文网其他相关文章!