Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment obtenir des lignes distinctes avec une valeur maximale

SELECT id, authorId, answer, votes
FROM (  SELECT id, authorId, answer, votes
        FROM answers
        ORDER BY votes DESC) AS h
GROUP BY authorId

Cette petite astuce est construite en se basant sur GROUP BY pour récupérer la première ligne de chaque cas. Habituellement c'est par défaut ORDER BY id ASC , mais via cette sous-requête, la première ligne de chaque authorId avec le plus grand nombre de votes .

Remarque : Comme mentionné par Iain Elder, cette solution ne fonctionne pas avec ONLY_FULL_GROUP_BY actif et ne fonctionne que dans MySQL. Cette solution est dans une certaine mesure non prise en charge en raison du manque de documentation confirmant ce comportement. Cela fonctionne bien pour moi et a toujours bien fonctionné pour moi cependant.

Cette méthode fonctionne toujours sur le dernier MySQL sur sqlfiddle .