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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!