MySQL-分组后取最新值

本文介绍了一种SQL查询技巧,通过子查询和分组,可以有效地从包含多个时间戳的成绩表中提取每个学生的最新成绩。适用于教育信息系统中成绩管理模块的数据分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.需求:一张表中有多组数据,要求取出每组的最新一条的某些字段值。

例如,成绩表中存储了学校所有学生(一年级、二年级、三年级)所有学科(语文、数学、英语)的成绩,要求取出某个学生的最近一次所有学科的成绩。

2.实现:

SELECT
 学科,
 (
  SELECT
   成绩
  FROM
   成绩表
  WHERE
   学科 = a.学科
  AND 年级 = a.年级
  AND 班级 = a.班级
  AND 学生名字 = a.学生名字
  ORDER BY
   Date DESC,
   Time DESC
  LIMIT 1
 ) AS 成绩
FROM
 成绩表 a
WHERE
 年级 = '一年级'
AND 班级 = '一班'
AND 学生名字 = a.学生名字
GROUP BY
 学科;

3.分析,可能不对,欢迎指正:

1)依据年级、班级、名字查询出该学生的所有成绩
2)依据学科进行分组
3)将分组后的学科值传入子查询中
4)子查询依据学科、年级、班级、学生名字进行查询,并按照日期、时间排序后取第一条数据
5)将子查询结果取别名为成绩
6)完成查询 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值