sql >> Databasteknik >  >> RDS >> Mysql

hur man får distinkta rader med maxvärde

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

Detta lilla snygga trick är byggt baserat på GROUP BY för att hämta den första raden i varje fall. Vanligtvis är detta som standard ORDER BY id ASC , men genom denna underfråga, den första raden i varje authorId med de högsta votes .

Obs! Som nämndes av Iain Elder, fungerar inte den här lösningen med ONLY_FULL_GROUP_BY aktiv och fungerar bara i MySQL. Denna lösning stöds till viss del inte på grund av brist på dokumentation som bekräftar detta beteende. Det fungerar bra för mig och har alltid fungerat bra för mig dock.

Den här metoden fungerar fortfarande på den senaste MySQL på sqlfiddle .



  1. MySQL LIMIT på DELETE-satsen

  2. Hur man förhindrar uppdateringar av en tabell, med undantag för en situation

  3. MySQL Databas backup automatiskt på en Windows-server

  4. Vilken hierarkisk modell ska jag använda? Närliggande, kapslad eller uppräknad?