Ce qui suit est la plus simple possible exemple, bien que toute solution devrait être en mesure à l'échelle par le nombre n d'obtenir les meilleurs résultats sont nécessaires:
Étant donné un tableau comme celui ci-dessous, avec la personne, le groupe et l'âge des colonnes, comment voulez-vous obtenir les 2 plus anciens de personnes dans chaque groupe? (Les liens au sein de groupes ne doivent pas céder plus de résultats, mais de donner les 2 premiers dans l'ordre alphabétique)
+--------+-------+-----+ | Personne | Groupe | Âge | +--------+-------+-----+ | Bob| 1 | 32 | | Jill| 1 | 34 | | Shawn| 1 | 42 | | Jake| 2 | 29 | | Paul| 2 | 36 | | Laura| 2 | 39 | +--------+-------+-----+
Résultats souhaités:
+--------+-------+-----+ | Shawn| 1 | 42 | | Jill| 1 | 34 | | Laura| 2 | 39 | | Paul| 2 | 36 | +--------+-------+-----+
REMARQUE: Cette question s'appuie sur un précédent- Obtenir des enregistrements avec valeur maximale pour chaque groupe d'regroupés les résultats SQL - pour l'obtention d'une seule rangée du haut, de chaque groupe, et qui a reçu une grande spécifique à MySQL réponse de @Bohème:
select *
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`
Aimerais être en mesure de construire ce, bien que je ne vois pas comment.