求今天每个班级最早来学校的学生信息
-- 年级表
create table `grade`(
`id` int(11) not null AUTO_INCREMENT COMMENT '主键',
`grade_id` int(11) COMMENT '年级',
`grade_name` int(11) COMMENT '年级名称',
PRIMARY KEY(`id`) USING BTREE
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT_DYNAMIC;
-- 学生签到表
create table `student_sign`(
`id` int(11) not null AUTO_INCREMENT COMMENT '主键',
`student_id` int(11) COMMENT '学号',
`student_name` varchar(50) COMMENT '姓名',
`status` varchar(5) COMMENT '状态,0-签到,1-签退',
`grade_id` int(11) COMMENT '年级',
`create_time` datetime DEFAULT NULL COMMENT '签到时间',
PRIMARY KEY(`id`) USING BTREE
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT_DYNAMIC;
解决方案,先联表查询,按时间排序后,再子查询,取最早时间的各个年级的学生信息
select ss.student_name, g.grade_name from (
select * from student_sign ss join grade g
on ss.grade_id = g.grade.id
where a.status =‘0’ order by a.create_time aesc limit 999999
) c
group by g.grade.id;