SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Deze kleine handige truc is gebouwd op basis van GROUP BY
om de eerste rij van elke zaak op te halen. Meestal is dit standaard ORDER BY id ASC
, maar via deze subquery, de eerste rij in elke authorId
met de hoogste votes
.
Opmerking: Zoals vermeld door Iain Elder, werkt deze oplossing niet met ONLY_FULL_GROUP_BY
actief en werkt alleen in MySQL. Deze oplossing wordt tot op zekere hoogte niet ondersteund vanwege een gebrek aan documentatie die dit gedrag bevestigt. Het werkt goed voor mij en heeft echter altijd goed gewerkt voor mij.
Deze methode werkt nog steeds op de nieuwste MySQL op sqlfiddle .