sql >> Base de Datos >  >> RDS >> Mysql

MySQL devuelve la primera fila de una tabla 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
       )

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.