REDIGER :Dette er MySQL 4.1+ understøttet
Brug:
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 bruge en cross join (i MySQL, en INNER JOIN uden nogen kriterier) til at erklære og bruge en variabel uden at bruge et separat SET
erklæring.
Du har brug for COALESCE for korrekt at håndtere NULL'erne.