首页 >数据库 >mysql教程 >如何在 Access SQL 中检索每个用户组的前 3 个最近记录?

如何在 Access SQL 中检索每个用户组的前 3 个最近记录?

Susan Sarandon
Susan Sarandon原创
2025-01-07 17:36:38521浏览

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