Access SQL:提取每個使用者的前 N 筆記錄
本指南示範如何使用單一 SQL 查詢在 Access 資料庫中檢索每個使用者的前三筆最新記錄。 我們將利用巢狀查詢來完成此任務。
資料庫結構
我們的資料庫由兩個表組成:
LoginID
、Forename
、Surname
、DOB
、Guardian Forename
、Guardian Surname
、Telephone Number
ProgressID
、LoginID
、Score
、Date 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中文網其他相關文章!