最近在工作中使用 MySQL
碰到了 TopN
,理论上来说这类问题不是 MySQL
的能力范围,不过在数据量较小的场景中仍然可以使用数据库的能力来完成 TopN
问题.
场景
为了避免场景难以理解,我们使用一个最简单的场景来实现该问题.
现在有一张学生成绩表,我们需要查寻出每门课程前 3 名的学生和成绩.
表结构
-- 学生分数
-- auto-generated definition
create table student_score
(
id int auto_increment
primary key,
name varchar(50) default '' not null comment '姓名',
course varchar(50) default '' not null comment '课程',
score int default -1 not null comment '分数'
)
comment '学生分数';
原创2023年6月3日大约 8 分钟