sql >> Database >  >> RDS >> Mysql

Hoe ga ik om met banden bij het rangschikken van resultaten in MySQL?

BEWERKEN :Dit wordt ondersteund door MySQL 4.1+

Gebruik:

   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

U kunt een cross join gebruiken (in MySQL, een INNER JOIN zonder criteria) om een ​​variabele te declareren en te gebruiken zonder een aparte SET te gebruiken verklaring.

Je hebt de COALESCE nodig om de NULL's goed te kunnen verwerken.



  1. producten vinden die klanten samen hebben gekocht

  2. ORA-20001 in R12 Verzamel schemastatistieken over 11g(FND_HISTOGRAM_COLS)

  3. Ruby datetime geschikt voor mysql vergelijking

  4. PHP Database Dump Script - zijn er problemen?