sql >> Databáze >  >> RDS >> Mysql

Jak naložím s remízou při hodnocení výsledků v MySQL?

UPRAVIT :Toto je podporováno MySQL 4.1+

Použijte:

   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

Můžete použít křížové spojení (v MySQL, INNER JOIN bez jakýchkoli kritérií) k deklaraci a použití proměnné bez použití samostatného SET prohlášení.

Ke správnému zpracování hodnot NULL potřebujete COALESCE.



  1. Jak vložit datum a čas s přesností na mikrosekundu do mysql?

  2. Jak přidat logo do záhlaví formuláře v aplikaci Access

  3. Docker-compose:mysqld:Nelze vytvořit/zapsat do souboru '/var/lib/mysql/is_writable' (Errcode:13 - Oprávnění odepřeno)

  4. Co je špatného na tomto PL/SQL? Bind Variable * NENÍ DEKLAROVÁNO