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 indice su (country_id, rating, id)
per la tabella MyISAM o (country_id, rating)
per la tabella InnoDB, aiuterebbe.
Questa query mostrerà solo un duck
per paese, anche se più di uno ha lo stesso rating. Se vuoi che appaiano anatre con punteggio pari, usa GROUP BY
di @imm rispondi.