一般に、サブクエリのORDERBYは意味がありません。 (FETCH FIRST / LIMIT / TOPなどと組み合わせた場合にのみ機能します)
解決策は、相関サブクエリを使用して、「メインクエリ」の現在の行のユーザー名、場所、種の組み合わせに対して最も重い魚を見つけることです。同点の場合は、両方の行が返されます。
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)
値を比較するときに両側をキャストする必要があるため、重みの文字はまだ悪い選択であることに注意してください。テーブルの小数に戻ります!