Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL restituisce la prima riga di una tabella unita

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 indice su (country_id, rating, id) per la tabella MyISAM o (country_id, rating) per la tabella InnoDB, aiuterebbe.

Questa query mostrerà solo un duck per paese, anche se più di uno ha lo stesso rating. Se vuoi che appaiano anatre con punteggio pari, usa GROUP BY di @imm rispondi.