MYSQL 按分数排名 ,同分同排名
时间: 2024-09-25 10:10:05 浏览: 35
位运算符-MYSQL数据库基础和实例教程
MySQL 中按分数排名并处理同分同排名的情况,通常需要使用 `ORDER BY` 子句配合 `LIMIT` 或者窗口函数如 `ROW_NUMBER()`。如果你有一张名为 `students` 的表,其中包含 `id` 和 `score` 两个字段,你可以这样做:
```sql
SELECT id, score,
ROW_NUMBER() OVER (PARTITION BY score ORDER BY id) as rank
FROM students
ORDER BY score DESC, id;
```
这里,`PARTITION BY score` 将数据分成不同的分区,每个分区内的数据按照 `id` 排序,这样可以保证同分的学生按 `id` 的顺序来确定排名。
如果只需要显示前 N 名,可以使用 `LIMIT`,比如:
```sql
SELECT id, score, rank
FROM (
SELECT id, score,
ROW_NUMBER() OVER (PARTITION BY score ORDER BY id) as rank
FROM students
) ranked_students
WHERE rank <= N
ORDER BY score DESC, id;
```
替换 `N` 为你想要的结果数量。
阅读全文