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

Jak uszeregować rekord o tej samej wadze w MySQL?

Korzystanie ze skrzypiec Giorgosa...

SELECT name
     , marks
     , FIND_IN_SET(marks, (SELECT GROUP_CONCAT(marks ORDER BY marks DESC) FROM mytable)) rank
  FROM mytable;

|     Name | Marks | rank |
|----------|-------|------|
| StudentA |    90 |    1 |
| StudentB |    85 |    2 |
| StudentC |    85 |    2 |
| StudentD |    70 |    4 |

http://sqlfiddle.com/#!9/7cc30/6

lub

SELECT name, marks, rank
FROM (SELECT name
     , marks
     , @prev := @curr
     , @curr := marks
     , @i:[email protected]+1 temp
     , @rank := IF(@prev = @curr, @rank, @i) AS rank
  FROM mytable
     , ( SELECT @curr := null, @prev := null, @rank := 0, @i:=0) vars
 ORDER 
    BY marks DESC,name
      ) x
      ORDER 
    BY marks DESC,name

http://sqlfiddle.com/#!9/287e07/9



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie są słabe punkty tej metody uwierzytelniania użytkownika?

  2. Próbuję ustawić domyślną wartość pola wyboru, jeśli nie jest zaznaczone

  3. Doctrine2:Nie można wybrać jednostki poprzez zmienne identyfikacyjne bez wybrania przynajmniej jednego aliasu jednostki głównej

  4. PHP — błąd krytyczny:wywołanie funkcji członkowskiej bind_param()

  5. Jak zrobić kwerendę sql join w laravel 5?