Secara umum ORDER BY dalam sub-kueri tidak masuk akal. (Ini hanya berlaku jika digabungkan dengan FETCH FIRST/LIMIT/TOP dll.)
Solusinya adalah dengan menggunakan sub-kueri berkorelasi untuk menemukan ikan terberat untuk nama pengguna, lokasi, kombinasi spesies baris "permintaan utama" saat ini. Jika seri, kedua baris akan dikembalikan.
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)
Perhatikan bahwa char untuk bobot masih merupakan pilihan yang buruk, karena itu Anda harus menggunakan kedua sisi saat membandingkan nilai. Kembali ke desimal di tabel Anda!