SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Tento malý úhledný trik je postaven na základě GROUP BY
pro načtení prvního řádku každého případu. Obvykle je to ve výchozím nastavení ORDER BY id ASC
, ale prostřednictvím tohoto dílčího dotazu první řádek v každém authorId
s nejvyšším votes
.
Poznámka: Jak zmínil Iain Elder, toto řešení nefunguje s ONLY_FULL_GROUP_BY
aktivní a funguje pouze v MySQL. Toto řešení je do jisté míry nepodporované kvůli nedostatku dokumentace potvrzující toto chování. Funguje to pro mě dobře a vždy mi to fungovalo dobře.
Tato metoda stále funguje na nejnovějším MySQL na sqlfiddle .