SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Trik kecil yang rapi ini dibuat berdasarkan GROUP BY
untuk mengambil baris pertama dari setiap kasus. Biasanya ini secara default ORDER BY id ASC
, tetapi melalui sub kueri ini, baris pertama di setiap authorId
dengan votes
tertinggi .
Catatan: Seperti yang disebutkan oleh Iain Elder, solusi ini tidak bekerja dengan ONLY_FULL_GROUP_BY
aktif dan hanya berfungsi di MySQL. Solusi ini sampai batas tertentu tidak didukung karena kurangnya dokumentasi yang mengonfirmasi perilaku ini. Ini bekerja dengan baik untuk saya dan selalu bekerja dengan baik untuk saya.
Metode ini masih berfungsi pada MySQL di sqlfiddle terbaru .