SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Detta lilla snygga trick är byggt baserat på GROUP BY för att hämta den första raden i varje fall. Vanligtvis är detta som standard ORDER BY id ASC , men genom denna underfråga, den första raden i varje authorId med de högsta votes .
Obs! Som nämndes av Iain Elder, fungerar inte den här lösningen med ONLY_FULL_GROUP_BY aktiv och fungerar bara i MySQL. Denna lösning stöds till viss del inte på grund av brist på dokumentation som bekräftar detta beteende. Det fungerar bra för mig och har alltid fungerat bra för mig dock.
Den här metoden fungerar fortfarande på den senaste MySQL på sqlfiddle .