最佳答案
以下是最简单的例子,尽管任何解决方案都应该能够扩展到所需的 n 个最高结果:
如果给出一个类似下面这样的表格,其中包含人员、组和年龄列,那么你会如何选择 每组中最年长的两个人?(组内的关系不应该产生更多的结果,而应该给出前2个字母顺序)
+--------+-------+-----+ | Person | Group | Age | +--------+-------+-----+ | Bob | 1 | 32 | | Jill | 1 | 34 | | Shawn | 1 | 42 | | Jake | 2 | 29 | | Paul | 2 | 36 | | Laura | 2 | 39 | +--------+-------+-----+
预期结果集:
+--------+-------+-----+ | Shawn | 1 | 42 | | Jill | 1 | 34 | | Laura | 2 | 39 | | Paul | 2 | 36 | +--------+-------+-----+
注意: 这个问题建立在前一个问题的基础上—— 获取每组 SQL 结果的最大值记录——从每个组中获得一个单独的最上一行,它从@Bohemian 得到了一个很棒的 MySQL 特有的答案:
select *
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`
我很希望能在这个基础上再建一个,虽然我不知道该怎么做。