Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL zwraca pierwszy wiersz połączonej tabeli

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
       )

Indeks na (country_id, rating, id) dla tabeli MyISAM lub (country_id, rating) dla tabeli InnoDB, pomogłoby.

To zapytanie pokaże tylko jedną duck na kraj, nawet jeśli więcej niż jeden ma taką samą ocenę. Jeśli chcesz, aby pojawiły się kaczki z remisową oceną, użyj GROUP BY @imm odpowiedź.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć wszystkie relacje między wszystkimi tabelami mysql?

  2. Jak znaleźć nieistniejące dane z innej tabeli przez JOIN?

  3. Jak poprawnie zapisać dane do bazy danych?

  4. Wizualny Konstruktor Zapytań

  5. MySQL JAK IN()?