sql >> Databasteknik >  >> RDS >> Mysql

Hur hanterar jag band när jag rangordnar resultat i MySQL?

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.



  1. Introduktion till Firebase

  2. Hur man ändrar sorteringen av en SQL Server-databas med T-SQL

  3. CodeIgniter Välj fråga

  4. ADDDATE() Exempel – MySQL