如果我有一个像这样的 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/