SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Questo piccolo trucco accurato è basato su GROUP BY
per recuperare la prima riga di ogni caso. Di solito questo è di default ORDER BY id ASC
, ma tramite questa sottoquery, la prima riga in ogni authorId
con i votes
più alti .
Nota: Come accennato da Iain Elder, questa soluzione non funziona con ONLY_FULL_GROUP_BY
attivo e funziona solo in MySQL. Questa soluzione è in una certa misura non supportata a causa della mancanza di documentazione che conferma questo comportamento. Funziona bene per me e comunque ha sempre funzionato bene per me.
Questo metodo funziona ancora sull'ultimo MySQL su sqlfiddle .