你可以使用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 著作权归作者所有。请勿转载和采集!

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