Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL retorna a primeira linha de uma tabela unida

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.