Mysql
 sql >> Base de données >  >> RDS >> Mysql

mySQL Plus grand nombre par groupe

En général ORDER BY dans une sous-requête n'a aucun sens. (Il ne le fait que lorsqu'il est combiné avec FETCH FIRST/LIMIT/TOP etc.)

La solution consiste à utiliser une sous-requête corrélée pour trouver le poisson le plus lourd pour le nom d'utilisateur, l'emplacement et la combinaison d'espèces de la ligne actuelle de la "requête principale". S'il y a égalité, les deux lignes seront renvoyées.

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)

Notez que char pour le poids est toujours un mauvais choix, car vous devez lancer les deux côtés lors de la comparaison des valeurs. Revenez au nombre décimal dans votre tableau !