Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment gérer les liens lors du classement des résultats dans MySQL ?

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.