Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL gibt die erste Zeile einer verknüpften Tabelle zurück

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.