首頁 >資料庫 >mysql教程 >如何在 SQL 中找到每個使用者的最新登入日期和值?

如何在 SQL 中找到每個使用者的最新登入日期和值?

Susan Sarandon
Susan Sarandon原創
2025-01-15 17:01:47938瀏覽

How to Find the Latest Login Date and Value for Each User in 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查詢

以下是兩種檢索每位使用者的最新記錄日期和值的方法:

方法一:使用自連接

這種經典方法利用自連接將表與自身匹配(基於用戶名),並使用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>

方法二:使用視窗函數(如果支援)

視窗函數提供了一種更有效率的替代方法,避免了由日期相等引起的重複記錄問題。此方法使用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>

這些查詢將產生以下結果,顯示每個使用者的最新登入日期和值:

**用户名** **日期** **值**
brad 2010年2月2日 1.2
fred 2010年1月3日 1.0
bob 2009年8月4日 1.5

以上是如何在 SQL 中找到每個使用者的最新登入日期和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn