sql >> Databasteknik >  >> RDS >> Mysql

mySQL Största antal per grupp

I allmänhet är ORDER BY i en underfråga meningslös. (Det gör det bara när det kombineras med FETCH FIRST/LIMIT/TOP etc.)

Lösningen är att använda en korrelerad underfråga för att hitta den tyngsta fisken för "huvudfrågans" nuvarande rads användarnamn, plats, artkombination. Om det är oavgjort, kommer båda raderna att returneras.

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)

Observera att röding för vikt fortfarande är ett dåligt val, eftersom du måste kasta båda sidor när du jämför värden. Gå tillbaka till decimal i tabellen!




  1. Codeigniter, mysql, select_max och lägg till 1 innan du infogar en annan post

  2. Infoga python binärt strängobjekt i MySQL blob

  3. Laravel 4 vältalig/modellrelationer

  4. Hur visar man WORK_MEM för externa PostgreSQL-anslutningar?