SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Ta mała zgrabna sztuczka jest zbudowana w oparciu o GROUP BY
aby pobrać pierwszy wiersz każdego przypadku. Zwykle jest to domyślnie ORDER BY id ASC
, ale w tym podzapytaniu pierwszy wiersz w każdym authorId
z najwyższymi votes
.
Uwaga: Jak wspomniał Iain Elder, to rozwiązanie nie działa z ONLY_FULL_GROUP_BY
aktywny i działa tylko w MySQL. To rozwiązanie jest w pewnym stopniu nieobsługiwane ze względu na brak dokumentacji potwierdzającej to zachowanie. Działa to dobrze dla mnie i zawsze działało dobrze dla mnie.
Ta metoda nadal działa na najnowszym MySQL w sqlfiddle .