ホームページ >データベース >mysql チュートリアル >SQL を使用して最新のユーザー アクティビティ レコードを効率的に取得するにはどうすればよいですか?

SQL を使用して最新のユーザー アクティビティ レコードを効率的に取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-15 16:51:45248ブラウズ

How to Efficiently Retrieve the Latest User Activity Record with SQL?

SQL を使用して最新のユーザー アクティビティ レコードを効率的に取得します

この記事では、SQL を介してデータベースにクエリを実行して、各ユーザーの最新のアクティビティ記録日を取得する方法について説明します。

ユーザーのログイン イベントを記録するデータベース テーブルがあるとします。

用户名 日期 数值
brad 2010-01-02 1.1
fred 2010-01-03 1.0
bob 2009-08-04 1.5
brad 2010-02-02 1.2
fred 2009-12-02 1.3

簡単な方法:

簡単なアプローチは、内部結合を使用してユーザー名と最新の日付を一致させることです。

<code class="language-sql">select t.username, t.date, t.value
from MyTable t
inner join (
    select username, max(date) as MaxDate
    from MyTable
    group by username
) tm on t.username = tm.username and t.date = tm.MaxDate</code>

ただし、このアプローチでは、同じ日付の重複レコードが発生する可能性があります。

ウィンドウ関数を使用する:

重複レコードの問題を解決するには、ウィンドウ関数を使用できます。

<code class="language-sql">select x.username, x.date, x.value 
from (
    select username, date, value,
        row_number() over (partition by username order by date desc) as _rn
    from MyTable 
) x
where x._rn = 1</code>

このクエリは、行パーティショニングと ROW_NUMBER() 関数を利用して、各ユーザーの各レコードにランクを割り当てます。最も高いランクが最新のレコードを示します。 WHERE 句により、各ユーザーの最新のアクティビティを表すランク 1 のレコードのみが選択されるようになります。

以上がSQL を使用して最新のユーザー アクティビティ レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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