РЕДАКТИРАНЕ :Това се поддържа MySQL 4.1+
Използвайте:
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
Можете да използвате кръстосано присъединяване (в MySQL, INNER JOIN без никакви критерии), за да декларирате и използвате променлива, без да използвате отделен SET
изявление.
Нуждаете се от COALESCE, за да боравите правилно с NULL.