sql >> Databasteknik >  >> RDS >> Mysql

MySQL returnerar första raden i en sammanfogad tabell

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
       )

Ett index på (country_id, rating, id) för MyISAM-tabellen eller (country_id, rating) för InnoDB-tabellen skulle hjälpa.

Den här frågan visar bara en duck per land, även om fler än ett har samma betyg. Om du vill att ankor med bundna betyg ska visas, använd @imms GROUP BY svar.



  1. Hur konverterar jag en kolumn till ASCII i farten utan att spara för att leta efter matchningar med en extern ASCII-sträng?

  2. MySQL till Excel-generering med PHP

  3. sammansatt (alfanumerisk) primärnyckel och automatisk ökning

  4. MySQL - Använder COUNT(*) i WHERE-satsen