SELECT mo.Letter, md.Rank
FROM (
SELECT DISTINCT letter
FROM mytable
) mo
JOIN mytable md
ON md.Letter >= mo.Letter
AND md.Letter <= mo.Letter
AND Rank <=
COALESCE
(
(
SELECT Rank
FROM mytable mi
WHERE mi.letter = mo.letter
ORDER BY
Rank
LIMIT 1, 1
),
0xFFFFFFFF
)
Bạn cần có một chỉ mục tổng hợp trên (Letter, Rank)
(theo thứ tự này)
Lưu ý cấu trúc này:
md.Letter >= mo.Letter
AND md.Letter <= mo.Letter
thay vì chỉ md.Letter = mo.Letter
Nó buộc Range checked for each record
hiệu quả hơn.
Xem bài viết này trong blog của tôi:
để biết thêm chi tiết về điều này.