Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak radzić sobie z remisami, gdy wyniki rankingu w MySQL?

EDYTUJ :To jest obsługiwane MySQL 4.1+

Użyj:

   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

Możesz użyć sprzężenia krzyżowego (w MySQL, INNER JOIN bez żadnych kryteriów), aby zadeklarować i użyć zmiennej bez użycia oddzielnego SET oświadczenie.

Potrzebujesz COALESCE, aby prawidłowo obsługiwać wartości NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz rekordy bieżącego miesiąca mysql z kolumny sygnatury czasowej

  2. Wady przechowywania obrazów w bazie danych?

  3. Jeden element quizu na stronę (program quizu php/mysql)

  4. Czy istnieje lista niedozwolonych znaków dla nazw kolumn tabeli mysql?

  5. Unikanie pojedynczego cudzysłowu w PHP podczas wstawiania do MySQL