SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Este pequeno truque é construído com base em
GROUP BY
para recuperar a primeira linha de cada caso. Normalmente, isso é por padrão ORDER BY id ASC
, mas por meio dessa subconsulta, a primeira linha em cada authorId
com os maiores votes
. Observação: Conforme mencionado por Iain Elder, esta solução não funciona com
ONLY_FULL_GROUP_BY
ativo e só funciona no MySQL. Esta solução é, até certo ponto, sem suporte devido à falta de documentação que confirme esse comportamento. Ele funciona bem para mim e sempre funcionou bem para mim no entanto. Este método ainda funciona no MySQL no sqlfiddle mais recente .