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 índice en (country_id, rating, id)
para la tabla MyISAM o (country_id, rating)
para la tabla InnoDB, ayudaría.
Esta consulta mostrará solo un duck
por país, incluso con más de uno con la misma calificación. Si desea que aparezcan patos con calificación empatada, use el GROUP BY
de @imm respuesta.