我有一個表,看起來像這樣: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語法。 –