SELECT c.*, d.*
FROM country c
INNER JOIN ducks d
ON d.id = --- guessing the ducks Primary Key here
( SELECT dd.id --- and here
FROM ducks dd
WHERE c.id = dd.country_id
ORDER BY dd.rating DESC
LIMIT 1
)
Indeks na (country_id, rating, id)
dla tabeli MyISAM lub (country_id, rating)
dla tabeli InnoDB, pomogłoby.
To zapytanie pokaże tylko jedną duck
na kraj, nawet jeśli więcej niż jeden ma taką samą ocenę. Jeśli chcesz, aby pojawiły się kaczki z remisową oceną, użyj GROUP BY
@imm odpowiedź.