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
)
Um índice em
(country_id, rating, id)
para tabela MyISAM ou (country_id, rating)
para a tabela InnoDB, ajudaria. Esta consulta mostrará apenas um
duck
por país, mesmo com mais de um com a mesma classificação. Se você quiser que os patos com classificação empatada apareçam, use o GROUP BY
do @imm responda.