MySQL按各科成绩进行排序,并显示排名,Score 重复时合并名次
时间: 2024-05-08 16:20:15 浏览: 182
你可以使用以下SQL语句实现这个功能:
```
SELECT Score, FIND_IN_SET(Score, (SELECT GROUP_CONCAT(Score ORDER BY Score DESC) FROM Scores)) AS Rank FROM Scores ORDER BY Score DESC;
```
解释一下这个语句:
1. 使用`GROUP_CONCAT`函数将`Scores`表中的`Score`按照降序排列,并且用逗号拼接成一个字符串。
2. 使用`FIND_IN_SET`函数查找每个分数在排名字符串中的位置,并且将这个位置作为`Rank`显示出来。
3. 最后按照分数的降序排列结果。
注意,如果有重复的分数,这些分数会被合并为一个排名。比如,如果有两个分数为90分的学生,它们的排名都会是1。
阅读全文