首頁 >資料庫 >mysql教程 >如何在Access SQL中檢索每個使用者的前N筆記錄?

如何在Access SQL中檢索每個使用者的前N筆記錄?

Linda Hamilton
Linda Hamilton原創
2025-01-07 17:32:41879瀏覽

How to Retrieve the Top N Records for Each User in Access SQL?

Access SQL:提取每個使用者的前 N ​​筆記錄

本指南示範如何使用單一 SQL 查詢在 Access 資料庫中檢索每個使用者的前三筆最新記錄。 我們將利用巢狀查詢來完成此任務。

資料庫結構

我們的資料庫由兩個表組成:

  • 使用者表: LoginIDForenameSurnameDOBGuardian ForenameGuardian SurnameTelephone Number
  • 進度表: ProgressIDLoginIDScoreDate Taken

解:巢狀查詢

針對此特定要求(檢索每個群組的前 N ​​),Access SQL 不直接支援在單一查詢中使用 TOP N 的簡單方法。 相反,我們將使用子查詢來實現此目的:

內部查詢標識每個 Date Taken 的前三個 LoginID 值:

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

然後在外部查詢的 IN 子句中使用此結果集來過濾 Progress 表:

<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 AS PR2
    WHERE PR2.LoginID = PR1.LoginID
    ORDER BY PR2.[Date Taken] DESC
)
ORDER BY PR1.LoginID, PR1.[Date Taken] DESC;</code>

這個最終查詢有效地傳回每個 LoginID 的三個最新記錄,按 LoginID 整齊地排序,然後按 Date Taken 按降序排列(最近的在前)。 這避免了直接將 TOP N 應用於 Access SQL 中分組資料的限制。

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

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