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
)
Un index sur (country_id, rating, id) pour la table MyISAM ou (country_id, rating) pour la table InnoDB, cela aiderait.
Cette requête n'affichera qu'un seul duck par pays, même avec plus d'un ayant la même note. Si vous voulez que les canards avec un classement ex aequo apparaissent, utilisez le GROUP BY de @imm réponse.