Mysql
 sql >> Datenbank >  >> RDS >> Mysql

wie man unterschiedliche Zeilen mit maximalem Wert erhält

SELECT id, authorId, answer, votes
FROM (  SELECT id, authorId, answer, votes
        FROM answers
        ORDER BY votes DESC) AS h
GROUP BY authorId

Dieser kleine nette Trick basiert auf GROUP BY um die erste Zeile jedes Falls abzurufen. Normalerweise ist dies standardmäßig ORDER BY id ASC , aber über diese Unterabfrage die erste Zeile in jeder authorId mit den höchsten votes .

Hinweis: Wie von Iain Elder erwähnt, funktioniert diese Lösung nicht mit ONLY_FULL_GROUP_BY aktiv und funktioniert nur in MySQL. Diese Lösung wird bis zu einem gewissen Grad aufgrund fehlender Dokumentation, die dieses Verhalten bestätigt, nicht unterstützt. Es funktioniert gut für mich und hat immer gut für mich funktioniert.

Diese Methode funktioniert immer noch auf dem neuesten MySQL auf sqlfiddle .