SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Thủ thuật nhỏ gọn gàng này được xây dựng dựa trên GROUP BY
để truy xuất hàng đầu tiên của mỗi trường hợp. Thông thường đây là theo mặc định ORDER BY id ASC
, nhưng thông qua truy vấn phụ này, hàng đầu tiên trong mỗi authorId
với votes
cao nhất .
Lưu ý: Như đã đề cập bởi Iain Elder, giải pháp này không hoạt động với ONLY_FULL_GROUP_BY
hoạt động và chỉ hoạt động trong MySQL. Giải pháp này ở một mức độ nhất định không được hỗ trợ do thiếu tài liệu xác nhận hành vi này. Nó hoạt động tốt cho tôi và luôn luôn hoạt động tốt cho tôi.
Phương pháp này vẫn hoạt động trên MySQL trên sqlfiddle mới nhất .