REDIGERA :Detta stöds MySQL 4.1+
Använd:
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
Du kan använda en korskoppling (i MySQL, en INNER JOIN utan några kriterier) för att deklarera och använda en variabel utan att använda en separat SET
uttalande.
Du behöver COALESCE för att korrekt hantera NULL.