sql >> Database teknologi >  >> RDS >> Mysql

mySQL Største antal efter gruppe

Generelt giver ORDER BY i en underforespørgsel ingen mening. (Det gør det kun, når det kombineres med FETCH FIRST/LIMIT/TOP osv.)

Løsningen er at bruge en korreleret underforespørgsel til at finde den tungeste fisk til "hovedforespørgslen"s aktuelle rækkes brugernavn, placering, artskombination. Hvis det er uafgjort, vil begge rækker blive returneret.

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)

Bemærk at char for vægt stadig er et dårligt valg, da du skal kaste begge sider når du sammenligner værdier. Gå tilbage til decimal i din tabel!




  1. PSQLE Undtagelses- og låseproblem, når trigger tilføjes på tabellen

  2. PHP-filen kan ikke indtaste en del af koden

  3. MySQL booking tilgængelighed, overlappende datointervaller

  4. Hvordan får jeg alle kombinationer af data fra en MySQL-tabel?