我有一个表,看起来像这样:SQL显示GROUP 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
我想GROUP BY 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”,所以我没有得到多个条目。
你真的想按StudentId。做到这一点的方法是选择max(DateApproved)。 (假设DateApproved是一个日期字段) –
Ok,DateApproved是一个VARCHAR,这个工作:MAX(STR_TO_DATE(DateApproved,'%d%m%y'))? –
嗯。我猜想值得一试。你必须尝试看看。我不太熟悉mysql语法。 –