MODIFIER :MySQL 4.1+ est pris en charge
Utiliser :
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
Vous pouvez utiliser une jointure croisée (dans MySQL, un INNER JOIN sans aucun critère) pour déclarer et utiliser une variable sans utiliser un SET
séparé déclaration.
Vous avez besoin de COALESCE pour gérer correctement les NULL.