首頁 >資料庫 >mysql教程 >如何在 Access SQL 中檢索每個使用者群組的前 3 個最近記錄?

如何在 Access SQL 中檢索每個使用者群組的前 3 個最近記錄?

Susan Sarandon
Susan Sarandon原創
2025-01-07 17:36:38520瀏覽

How to Retrieve the Top 3 Recent Records per User Group in Access SQL?

在 Access SQL 中有效檢索每個使用者群組的最近 3 筆記錄

資料庫管理通常涉及檢索特定的資料子集。 在追蹤測試分數等場景中,您可能需要提取每個使用者的三個最新條目。此任務雖然看似簡單,但需要複雜的 SQL 查詢來將最近記錄的選擇與按使用者對資料進行分組結合。

以下 SQL 查詢提供了解決方案:

<code class="language-sql">SELECT PR1.LogInID, PR1.Score, PR1.[Date Taken]
FROM Progress AS PR1
WHERE PR1.[Date Taken] IN (
                        SELECT TOP 3 PR2.[Date Taken]
                        FROM Progress PR2
                        WHERE PR2.LoginID = PR1.LoginID
                        ORDER BY PR2.[Date Taken] DESC
                        )
ORDER BY LoginID, [Date Taken] DESC;</code>

查詢細分:

此查詢利用主查詢(外部查詢)內的子查詢(內部查詢)來實現所需的結果。

  • 子查詢: 此巢狀查詢標識每個唯一 LoginID 的三個最近的「拍攝日期」值。它透過以下方式做到這一點:

    • 選擇前三個 [Date Taken] 值。
    • 過濾 Progress 表 (PR2) 以僅包含與外部查詢 (LoginID) 中的 PR1.LoginID 相符的記錄。
    • [Date Taken] 對結果進行降序排序,以確保最近的日期優先。
  • 主查詢: 主查詢然後使用 Progress 運算子過濾 PR1 表 (IN)。 此運算符可確保僅包含其 [Date Taken] 值出現在子查詢的結果集中的記錄(即該使用者的三個最近日期)。最後,結果按 LoginID 排序,然後按 [Date Taken](降序)排序,以便於閱讀。

此方法有效地檢索每個使用者的三個最新分數,有效處理 [Date Taken] 欄位中的潛在關係。 子查詢和 IN 運算符的結合使用為這一常見的資料庫挑戰提供了簡潔而強大的解決方案。

以上是如何在 Access SQL 中檢索每個使用者群組的前 3 個最近記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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