sql >> Databáze >  >> RDS >> Mysql

mySQL Největší počet podle skupiny

Obecně nedává ORDER BY v dílčím dotazu smysl. (To pouze v kombinaci s FETCH FIRST/LIMIT/TOP atd.)

Řešením je použití korelovaného dílčího dotazu k nalezení nejtěžší ryby pro aktuální řádek "hlavního dotazu" s uživatelským jménem, ​​umístěním a kombinací druhů. Pokud je to nerozhodné, budou vráceny obě řady.

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)

Všimněte si, že char pro hmotnost je stále špatná volba, protože při porovnávání hodnot musíte použít obě strany. Vraťte se ve své tabulce na desetinné číslo!




  1. Jakou velikost má hodnota Null na serveru SQL Server

  2. base64 kódování v MySQL

  3. Připojovací fond Java MySQL nefunguje

  4. Jak zabránit souběžnému přihlášení uživatelů na webu PHP/MySQL?