Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да се справя с връзките при класиране на резултатите в MySQL?

РЕДАКТИРАНЕ :Това се поддържа MySQL 4.1+

Използвайте:

   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

Можете да използвате кръстосано присъединяване (в MySQL, INNER JOIN без никакви критерии), за да декларирате и използвате променлива, без да използвате отделен SET изявление.

Нуждаете се от COALESCE, за да боравите правилно с 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. IO.FileNotFoundException в MySql.Data.dll:Не мога да заредя System.Security.Permissions

  2. Създаване на персонализирани html-тагове за CMS?

  3. Как да използвате квадратчета за отметка за извличане на конкретни данни в база данни

  4. SQLite - ПОРЪЧАЙТЕ ПО RAND()

  5. Как да нулирате паролата на MySQL root