sql >> Database teknologi >  >> RDS >> Mysql

Sådan rangerer du en rekord med samme vægt i MySQL

Bruger Giorgos' violin...

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

eller

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. indsætte alle $_POST-data i mysql ved hjælp af PHP?

  2. hvorfor virker min node-app i et øjeblik og går ned (heroku)?

  3. Opdatering af datagridview med mysql

  4. Symfony2-doktrinen opretter forbindelse til databasen via SSL