SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Dette lille smarte trick er bygget ud fra GROUP BY
for at hente den første række af hver sag. Normalt er dette som standard ORDER BY id ASC
, men gennem denne underforespørgsel, den første række i hver authorId
med de højeste votes
.
Bemærk: Som nævnt af Iain Elder, virker denne løsning ikke med ONLY_FULL_GROUP_BY
aktiv og virker kun i MySQL. Denne løsning er til en vis grad ikke understøttet på grund af manglende dokumentation, der bekræfter denne adfærd. Det fungerer godt for mig og har dog altid fungeret godt for mig.
Denne metode virker stadig på den seneste MySQL på sqlfiddle .