我有一个看起来像这样的表:
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
关于mysql - SQL 在 GROUP BY 中显示最近的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445162/