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