1

データベースにデータがあります

ID    UserID   CourseName   Grade                                  
 1      8        CourseA      75
 2      8        CourseA      102 
 3      8        CourseA      115
 4      8        CourseA      111
 5      8        CourseA      112
 6      8        CourseB      60
 7      8        CourseB      45
 8      8        CourseB      58
 9      8        CourseB      60
 10     8        CourseB      74
 11     8        CourseC      130
 12     8        CourseC      140
 13     8        CourseC      133 
 14     8        CourseC      135

次のような単一のコースの最後に更新された成績が必要です

`8     CourseA   112    
 8     CourseB   74
 8     CourseC   135`

誰かが私にこれのためのSQLクエリを提案できますか?

4

4 に答える 4

0

別の列の変更日を追加できます

alter table tableName add column modifiedDate DEFAULT NOW() ON UPDATE NOW()

次に、コースの最後に更新された成績を取得します

 select * from tableName where course ='CourseA' 
 order by modifiedDate desc limit 1
于 2012-07-10T13:21:33.103 に答える
0

了解しました。回答を更新します。

とった:

SELECT UserID, CourseName, Grade
FROM yourtable
WHERE UserID = '8'
AND ID
IN (
    SELECT MAX( ID ) 
    FROM yourtable
    GROUP BY CourseName
)
于 2012-07-10T13:19:47.590 に答える
0
select * from Course a 
where id=(select max(b.id) from Course b where b.CourseName=a.CourseName); 

その後、ID、CourseNameで結果をグループ化できます

未検証!

于 2012-07-10T13:33:16.210 に答える
0

SELECT * FROM Table ORDER BY id DESC LIMIT 1;

于 2020-04-02T06:07:18.897 に答える