mysql - SQL 在 GROUP BY 中显示最近的记录?

标签 mysql sql group-by sql-order-by

我有一个看起来像这样的表:

id    |    SubjectCode    |    Grade    |    DateApproved    |    StudentId

1            SUB123            1.25            1/4/2012            2012-12345

2            SUB123            2.00            1/5/2012            2012-12345

3            SUB123            3.00            1/5/2012            2012-98765   

我正在尝试按 SubjectCode 进行分组,但我希望它显示最新的 DateApproved,因此它看起来像:

  id    |    SubjectCode    |    Grade    |    DateApproved    |    StudentId

2            SUB123            2.00            1/5/2012            2012-12345

3            SUB123            3.00            1/5/2012            2012-98765  

我有点不知道该怎么做?

编辑:

好的,伙计们,我现在正在使用我的真实 PC,很抱歉问题结构不佳。

这就是我实际想要做的:

SELECT GD.GradebookDetailId, G.SubjectCode, G.Description, G.UnitsAcademic, G.UnitsNonAcademic, 
GD.Grade, GD.Remarks, G.FacultyName, STR_TO_DATE(G.DateApproved, '%m/%d/%Y %h:%i:%s') AS 'DateAproved'
FROM gradebookdetail GD INNER JOIN gradebook G ON GD.GradebookId=G.GradebookId 
WHERE G.DateApproved IS NOT NULL AND G.GradebookType='final' AND StudentIdNumber='2012-12345'

GROUP BY <?????>
ORDER BY G.SubjectCode ASC

基本上,我只想显示“SubjectCode”的最新“DateApprove”,所以我不会得到多个条目。

最佳答案

从这里开始:

select StudentId, max(DateApproved) 
from tbl
group by StudentId

然后将其整合到主查询中:

select * 
from tbl
where (StudentId, DateApproved) in

(
  select StudentId, max(DateApproved) 
  from tbl
  group by StudentId
)

你也可以这样用:

select * 
from tbl
join (select StudentId, max(DateApproved) as DateApproved 
      from tbl 
      group by StudentId)
using (StudentId, DateApproved)

但我更喜欢元组测试,neater

现场测试:http://www.sqlfiddle.com/#!2/771b8/5

关于mysql - SQL 在 GROUP BY 中显示最近的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445162/

相关文章:

mysql - 从 View 创建表?

mysql - 获取唯一的color_id,其中库存数量大于订单数量

mysql - 选择...分组依据

mysql - MYSQL groupb函数中的条件输出

mysql - LEFT JOIN 2 Table 但只会返回 Table2 中的第一条记录

sql - MySQL 中如果字段为空则返回 0

mysql - 光标查找字数

php - 使用 php 和 mysql 将从数据库检索到的值传递到另一个页面

MySQL插入后触发

java - 像 DBMS 一样快速计算笛卡尔积