【发布时间】:2012-05-13 18:45:34
【问题描述】:
我有一张如下所示的表格:
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 是一个日期字段)
-
好的,DateApproved 是一个 VARCHAR,这会起作用吗:MAX(STR_TO_DATE(DateApproved, '%d%m%y')) ?
-
嗯。我想这值得一试。你得试试看。对mysql语法不太熟悉。
-
首先,通过设置
DATE数据类型来修复您的日期列。你到底为什么要使用VARCHAR约会? -
@ypercube,我没有修改权限
标签: mysql sql group-by sql-order-by