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 .