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!