ホームページ  >  記事  >  データベース  >  ActiveRecord を使用して MySQL の各一意のユーザーの最新の訪問時間を取得する方法

ActiveRecord を使用して MySQL の各一意のユーザーの最新の訪問時間を取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 06:23:03387ブラウズ

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

ActiveRecord で MySQL で DISTINCT ON を使用する

大量のデータを扱う場合、データベース操作の実行中に一意の情報を抽出することが必要になることがよくあります。このようなシナリオの 1 つは、各個別のユーザーの最新の訪問を識別することです。

質問:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。