CHỈNH SỬA :Đây là MySQL 4.1+ được hỗ trợ
Sử dụng:
SELECT st.name,
sc.grades,
CASE
WHEN @grade = COALESCE(sc.grades, 0) THEN @rownum
ELSE @rownum := @rownum + 1
END AS rank,
@grade := COALESCE(sc.grades, 0)
FROM STUDENTS st
LEFT JOIN SCORES sc ON sc.student_id = st.id
JOIN (SELECT @rownum := 0, @grade := NULL) r
ORDER BY sc.grades DESC
Bạn có thể sử dụng một phép nối chéo (trong MySQL, một INNER JOIN không có bất kỳ tiêu chí nào) để khai báo và sử dụng một biến mà không cần sử dụng SET
riêng biệt tuyên bố.
Bạn cần COALESCE để xử lý đúng các NULL.