ActiveRecord を使用して MySQL で個別のユーザーの最新の訪問を見つける方法
DISTINCT ON 関数を使用しようとしているときに構文エラーが発生しましたActiveRecordのMySQL?解決策は次のとおりです。
最初のクエリ:
Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')
は、DISTINCT ON が MySQL でサポートされていないため、エラーを返します。代わりに、GROUP BY と MAX を組み合わせて使用すると、目的の結果を得ることができます。
変更されたクエリ:
Events.group(:user_id).maximum(:time)
このクエリは、イベントを user_id でグループ化し、最大時間を検索します。
期待される出力:
{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}
タイムスタンプの形式はデータベース構成によって異なる場合があることに注意してください。 .
以上がActiveRecord を使用して MySQL で各ユーザーの最新の訪問を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。