EDIT :Ini didukung MySQL 4.1+
Gunakan:
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
Anda dapat menggunakan gabungan silang (di MySQL, INNER JOIN tanpa kriteria apa pun) untuk mendeklarasikan dan menggunakan variabel tanpa menggunakan SET
terpisah pernyataan.
Anda memerlukan COALESCE untuk menangani NULL dengan benar.