Mysql
 sql >> Database >  >> RDS >> Mysql

come ottenere righe distinte con valore massimo

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 .