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
)
Chỉ mục trên (country_id, rating, id)
cho bảng MyISAM hoặc (country_id, rating)
cho bảng InnoDB, sẽ hữu ích.
Truy vấn này sẽ chỉ hiển thị một duck
mỗi quốc gia, ngay cả khi có nhiều quốc gia có cùng xếp hạng. Nếu bạn muốn những con vịt có xếp hạng được ràng buộc xuất hiện, hãy sử dụng GROUP BY
của @ imm's câu trả lời.