使用mysql数据库查出每个年级,每个班级成绩前10的名单
时间: 2024-02-26 20:56:24 浏览: 126
可以使用以下 SQL 语句来查询每个年级、每个班级成绩前10的名单:
```
SELECT grade, class, name, score
FROM (
SELECT grade, class, name, score,
@rank := IF(@prev_grade = grade AND @prev_class = class, @rank + 1, 1) AS rank,
@prev_grade := grade,
@prev_class := class
FROM scores
CROSS JOIN (SELECT @rank := 0, @prev_grade := NULL, @prev_class := NULL) AS vars
ORDER BY grade, class, score DESC
) AS subquery
WHERE rank <= 10
ORDER BY grade, class, rank
```
其中,`scores` 表是存储学生成绩的表,包含以下字段:`name`(学生姓名)、`grade`(年级)、`class`(班级)和 `score`(成绩)。这个 SQL 语句使用了变量、子查询和排序来实现。首先在子查询中,使用变量来计算每个学生的排名,然后在外层查询中选择排名前10的学生,并按照年级、班级和排名排序返回结果。
阅读全文