sql >> Database >  >> RDS >> Mysql

MySQL retourneert de eerste rij van een samengevoegde tabel

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
       )

Een index op (country_id, rating, id) voor MyISAM-tabel of (country_id, rating) voor InnoDB-tabel, zou helpen.

Deze zoekopdracht toont slechts één duck per land, zelfs als er meer dan één dezelfde beoordeling heeft. Als je wilt dat eenden met een gelijke beoordeling verschijnen, gebruik dan @imm's GROUP BY antwoord.



  1. Het uitvoeringsplan voor query's bekijken in Azure Data Studio (SQL Server)

  2. Wanneer en waarom mysqli_fetch_row, mysqli_fetch_object, mysqli_fetch_assoc, mysqli_fetch_array gebruiken

  3. Aantal keren voorkomen in tabel PHP echo

  4. Hoe Plafond() werkt in PostgreSQL