mysql - SQL 选择组的第 n 个成员

标签 mysql group-by

如果我有一个像这样的 USER 表

class | age
--------------
1       20    
3       56
2       11
1       12
2       20

然后我可以很容易地通过以下方式获得每个类(class)中最年轻的用户

select class, min(age)
from   user
group by class;

同样,通过将 min 替换为 max,我可以获得最旧的。但是,我怎样才能获得每个类(class)中第 10 个最年轻(或最年长)的?顺便说一句,我使用的是 MySql v.5.0。

干杯,

最佳答案

SELECT a.class,
(
    SELECT b.age 
    FROM users b 
    WHERE b.class = a.class
    ORDER BY age 
    LIMIT 1,1
) as age
FROM users a
GROUP BY a.class

将在每个类(class)中排名第二。如果您想要第 10 个最小的,您可以执行 LIMIT 9,1,如果您想要第 10 个最老的,您可以执行ORDER BY age DESC

关于mysql - SQL 选择组的第 n 个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463054/

相关文章:

PHP:如何从单选按钮创建数组并保存到 MySql

MySQL - = ""和 != ""关于 null 的不同行为

mysql - 新 sql 表中不需要的主键

mysql - 如何在一个 sql 查询中有 2 个排序依据

sql - PostgreSQL 9.3。没有所有列的分组依据

php - 尝试将查询结果相乘以获得总数

r - 基于两个不同的列添加一个列,每个列都有多个不同的名称

python - Pandas 集团 : How to get top n values based on a column

mysql - 不要抓取重复项(MYSQL DISTINCT GROUP BY)

sql-server - LINQ:有关 groupby 的帮助,似乎不像 SQL 那样工作:-) 只让我返回 .Key 而没有其他?