Sau đây là ví dụ đơn giản nhất có thể, mặc dù mọi giải pháp đều có thể mở rộng theo tuy nhiên cần nhiều kết quả hàng đầu:
Đưa ra một bảng như thế bên dưới, với các cột người, nhóm và tuổi, làm thế nào bạn có được 2 người già nhất trong mỗi nhóm? (Các mối quan hệ trong các nhóm không nên mang lại nhiều kết quả hơn, nhưng đưa ra 2 kết quả đầu tiên theo thứ tự bảng chữ cái)
+ -------- + ------- + ----- + | Người | Nhóm | Tuổi | + -------- + ------- + ----- + | Bob | 1 | 32 | | Jill | 1 | 34 | | Bình minh | 1 | 42 | | Jake | 2 | 29 | | Paul | 2 | 36 | | Laura | 2 | 39 | + -------- + ------- + ----- +
Bộ kết quả mong muốn:
+ -------- + ------- + ----- + | Bình minh | 1 | 42 | | Jill | 1 | 34 | | Laura | 2 | 39 | | Paul | 2 | 36 | + -------- + ------- + ----- +
LƯU Ý: Câu hỏi này được xây dựng trên câu hỏi trước- Nhận bản ghi với giá trị tối đa cho từng nhóm kết quả SQL được nhóm - để nhận một hàng trên cùng từ mỗi nhóm và nhận được câu trả lời cụ thể về MySQL từ @Bohescent:
select *
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`
Rất thích có thể xây dựng điều này, mặc dù tôi không thấy làm thế nào.