sql >> Base de Datos >  >> RDS >> Mysql

cómo obtener filas distintas con valor máximo

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 .

Nota: Como mencionó Iain Elder, esta solución no funciona con 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 .