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中文网其他相关文章!