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
)
Ein Index zu (country_id, rating, id)
für MyISAM-Tabelle oder (country_id, rating)
für die InnoDB-Tabelle, würde helfen.
Diese Abfrage zeigt nur eine duck
pro Land, auch wenn mehr als eines das gleiche Rating hat. Wenn Sie möchten, dass Enten mit gleicher Bewertung erscheinen, verwenden Sie GROUP BY
von @imm Antwort.