MS Access 选择表中的第 N 个最高值

Posted

技术标签:

【中文标题】MS Access 选择表中的第 N 个最高值【英文标题】:MS Access select the Nth Highest value in a table 【发布时间】:2018-08-09 09:26:25 【问题描述】:

所以我有以下数据库格式:

+------++------+
| ID   | Value |
+------++------+ 
| 1    |   5   |
| 1    |   2   |
| 1    |   8   |
| 1    |   1   |
| 2    |   2   |
| 2    |   3   |
| 2    |   6   |
| 2    |   10  |
| 3    |   1   |
| 3    |   2   |
| 3    |   5   |
| 3    |   3   | 
| 3    |   5   |
+------++------+

我正在尝试输出每个 ID 的前 3 个值。喜欢:

    +------++------+
    | ID   | Value |
    +------++------+ 
    | 1    |   8   |
    | 1    |   5   |
    | 1    |   3   |
    | 2    |   10  |
    | 2    |   6   |
    | 2    |   3   |
    | 3    |   5   |
    | 3    |   5   |
    | 3    |   3   |
    +------++------+

这可以在 MS Access 中使用 SQL 实现吗?

【问题讨论】:

这看起来像是每组访问问题的前 N ​​个问题。 This question 可能会有所帮助。 【参考方案1】:

你需要相关子查询:

select t.*
from [table] t
where value in (select top 3 t1.value
                from [table] t1
                where t1.id = t.id
                order by t1.value desc
               ) order by ID asc, value desc;

【讨论】:

以上是关于MS Access 选择表中的第 N 个最高值的主要内容,如果未能解决你的问题,请参考以下文章

MS Access:从没有外键的 2 个表中选择记录

如何从 MS access 2007 中的特定表中选择索引

使用联合从 MS Access 表中选择随机记录 [重复]

如果表单未绑定,如何选择 MS Access 组合框中的第一项

选择每组前 N 个项目 ms-Access - MORE "Ns"

确定是不是在 MS Access 2007 列表框中选择了行