Aşağıdakiler mümkün olan en basit örnektir, ancak herhangi bir çözüm ölçeklendirilebilmelidir, ancak birçok en iyi sonuca ihtiyaç vardır:
Kişi, grup ve yaş sütunlarıyla aşağıdaki gibi bir tablo verildiğinde , her gruptaki en yaşlı 2 kişiyi nasıl elde edersiniz? (Grup içindeki bağlar daha fazla sonuç vermemeli, ilk 2'yi alfabetik sıraya göre vermelidir)
+ -------- + ------- + ----- + | Kişi | Grup | Yaş | + -------- + ------- + ----- + | Bob | 1 | 32 | | Jill | 1 | 34 | | Shawn | 1 | 42 | | Jake | 2 | 29 | | Paul | 2 | 36 | | Laura | 2 | 39 | + -------- + ------- + ----- +
İstenen sonuç kümesi:
+ -------- + ------- + ----- + | Shawn | 1 | 42 | | Jill | 1 | 34 | | Laura | 2 | 39 | | Paul | 2 | 36 | + -------- + ------- + ----- +
NOT: Bu soru, bir önceki grup - Her gruptan tek bir üst satır almak için ve @Bohemian'dan büyük bir MySQL'e özel yanıt alan her gruplanmış SQL sonuç grubu için maksimum değeri olan kayıtları alın :
select *
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`
Nasıl yapılacağını bilmesem de, bunu inşa edebilmek isterdim.