MySQL 5.6 获取每个班级分数最高的前三名学生(不使用窗口函数)
你可以使用MySQL的子查询来实现这个需求。下面是一个示例查询语句:
SELECT s.class, s.name, s.score
FROM students s
WHERE (
SELECT COUNT(*)
FROM students s2
WHERE s2.class = s.class AND s2.score > s.score
) < 3
ORDER BY s.class, s.score DESC;
在这个查询中,我们首先选择了班级、学生姓名和分数。然后,我们使用子查询来计算每个学生的班级中比他分数高的学生数量。最后,我们只选择那些分数最高且排名前三的学生。查询结果按班级和分数降序排序。
请注意,这种方法可能在数据量较大时效率较低。如果你需要处理大量数据,建议使用窗口函数来提高性能。
原文地址: https://www.cveoy.top/t/topic/pn3Y 著作权归作者所有。请勿转载和采集!