要取每个班级得分最高的前三名学生,可以使用以下 MySQL 查询语句:

SELECT class, student, score
FROM (
  SELECT class, student, score,
    ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rank
  FROM students
) AS ranked
WHERE rank <= 3;

这个查询语句使用了子查询和窗口函数。子查询将学生表按班级分组,并按照得分降序排列,然后使用窗口函数 ROW_NUMBER() 为每个学生计算排名。最后,外部查询选择排名小于等于 3 的学生,即每个班级得分最高的前三名学生。

假设学生表的结构如下:

CREATE TABLE students (
  id INT PRIMARY KEY,
  student VARCHAR(50),
  class INT,
  score INT
);

你需要将上述查询语句中的 "students" 替换为你实际的学生表名。

MySQL 5.6 获取每个班级得分最高的前三名学生 - 优化方案

原文地址: https://www.cveoy.top/t/topic/pn3S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录