SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Este pequeño truco ingenioso se basa en GROUP BY
para recuperar la primera fila de cada caso. Por lo general, esto es por defecto ORDER BY id ASC
, pero a través de esta subconsulta, la primera fila de cada authorId
con los votes
más altos .
ONLY_FULL_GROUP_BY
activo y solo funciona en MySQL. Esta solución hasta cierto punto no es compatible debido a la falta de documentación que confirme este comportamiento. A mí me funciona bien y, sin embargo, siempre me ha funcionado bien.
Este método todavía funciona en el último MySQL en sqlfiddle .