ホームページ >データベース >mysql チュートリアル >SQL で各ユーザーの最新のログイン日と値を確認するにはどうすればよいですか?
SQL クエリ: 各ユーザーの最後に記録された日付と値を取得します
ユーザーのログイン記録はデータベースに保存されており、そのタスクは、異なるユーザーごとに最新のログイン日とそれに対応する値を取得することです。次の表は、ユーザー名、日付、値を含むフィールドを持つこのデータを含むテーブルを示しています:
**用户名** | **日期** | **值** |
---|---|---|
brad | 2010年1月2日 | 1.1 |
fred | 2010年1月3日 | 1.0 |
bob | 2009年8月4日 | 1.5 |
brad | 2010年2月2日 | 1.2 |
fred | 2009年12月2日 | 1.3 |
各ユーザーの最新のレコードの日付と値を取得する SQL クエリ
各ユーザーの最新の記録日と値を取得する 2 つの方法は次のとおりです:
方法 1: 自己接続を使用する
この古典的なアプローチでは、自己結合を利用してテーブルをそれ自体と照合し (ユーザー名に基づいて)、MAX() 集計関数を使用して各ユーザーの最大の日付を取得します。
<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>
方法 2: ウィンドウ関数を使用する (サポートされている場合)
ウィンドウ関数は、日付が等しいことによって引き起こされる重複レコードの問題を回避する、より効率的な代替手段を提供します。このメソッドは ROW_NUMBER() 関数を使用して、ユーザー名で分割され、日付で降順に並べ替えられた結果セットを操作します。
<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>これらのクエリは、各ユーザーの最新のログイン日付と値を示す次の結果を生成します:
以上がSQL で各ユーザーの最新のログイン日と値を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。