sql >> Database >  >> RDS >> Mysql

mySQL Grootste aantal per groep

In het algemeen heeft ORDER BY in een subquery geen zin. (Alleen in combinatie met FETCH FIRST/LIMIT/TOP etc.)

De oplossing is om een ​​gecorreleerde subquery te gebruiken om de zwaarste vis te vinden voor de gebruikersnaam, locatie en soortcombinatie van de huidige rij van de "hoofdquery". Als het gelijk is, worden beide rijen geretourneerd.

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)

Merk op dat char voor gewicht nog steeds een slechte keuze is, omdat je beide kanten moet werpen bij het vergelijken van waarden. Ga terug naar decimaal in je tabel!




  1. Java-sortering is niet hetzelfde met MySQL-sortering

  2. Verschillende waarden uit meerdere lijsten samenvoegen met Oracle JSON_OBJECT &JSON_ARRAYAGG

  3. Django dumpdata gebruiken om een ​​subset van algemene gegevens te dumpen?

  4. hoe deze fout op te lossen PHP Fatale fout:oproep naar niet-gedefinieerde functie mysql_query() in cake bake-console