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

mySQL Größte Zahl nach Gruppe

Im Allgemeinen macht ORDER BY in einer Unterabfrage keinen Sinn. (Nur in Kombination mit FETCH FIRST/LIMIT/TOP etc.)

Die Lösung besteht darin, eine korrelierte Unterabfrage zu verwenden, um den schwersten Fisch für die Kombination aus Benutzername, Ort und Art der aktuellen Zeile der "Hauptabfrage" zu finden. Bei Gleichstand werden beide Zeilen zurückgegeben.

SELECT *
FROM entries e1
WHERE username = :user
  AND CAST(weight AS DECIMAL(9,3)) = (select max(CAST(weight AS DECIMAL(9,3)))
                                      from entries e2
                                      where e1.username = e2.username
                                        and e1.location = e2.location
                                        and e1.species = e2.species)

Beachten Sie, dass char für Gewicht immer noch eine schlechte Wahl ist, da Sie beim Vergleichen von Werten beide Seiten werfen müssen. Gehen Sie zurück zur Dezimalzahl in Ihrer Tabelle!