mysql查询成绩排名显示-两种排名方式

1 1 3 4排名方式

mysql> select * from score;

+----+-------+
| id | Score |
+----+-------+
|  1 |  36.5 |
|  2 |  37.8 |
|  3 |  40.6 |
|  4 |  42.6 |
|  5 |  36.5 |
|  6 |  36.5 |
|  7 |  42.6 |
|  8 |  40.6 |
|  9 |  22.8 |
| 10 |  42.6 |
+----+-------+
10 rows in set

mysql> select t.score,(select count(s.score)+1 from score s where s.score>t.score) rank from score t order by t.score desc;
 
+-------+------+
| score | rank |
+-------+------+
|  42.6 |    1 |
|  42.6 |    1 |
|  42.6 |    1 |
|  40.6 |    4 |
|  40.6 |    4 |
|  37.8 |    6 |
|  36.5 |    7 |
|  36.5 |    7 |
|  36.5 |    7 |
|  22.8 |   10 |
+-------+------+

10 rows in set


1 1 2 3 排序方式


mysql> select t.score,(select count(s.score)+1 from (select s.score,count(s.score) from score s group by score order by score desc) s where s.score>t.score) rank from score t order by t.score desc;
+-------+------+
| score | rank |
+-------+------+
|  42.6 |    1 |
|  42.6 |    1 |
|  42.6 |    1 |
|  40.6 |    2 |
|  40.6 |    2 |
|  37.8 |    3 |
|  36.5 |    4 |
|  36.5 |    4 |
|  36.5 |    4 |
|  22.8 |    5 |
+-------+------+
10 rows in set

你可能感兴趣的:(mysql)