MySQL-分组后取最新值

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)完成查询 

猜你喜欢

转载自blog.csdn.net/JustDI0209/article/details/106814534
今日推荐