SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Questo piccolo trucco accurato è basato su GROUP BY per recuperare la prima riga di ogni caso. Di solito questo è di default ORDER BY id ASC , ma tramite questa sottoquery, la prima riga in ogni authorId con i votes più alti .
Nota: Come accennato da Iain Elder, questa soluzione non funziona con ONLY_FULL_GROUP_BY attivo e funziona solo in MySQL. Questa soluzione è in una certa misura non supportata a causa della mancanza di documentazione che conferma questo comportamento. Funziona bene per me e comunque ha sempre funzionato bene per me.
Questo metodo funziona ancora sull'ultimo MySQL su sqlfiddle .