2012-07-10 119 views
1

我有數據在我的數據庫MySQL查詢最近更新的行

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查詢。

+2

如果沒有其他列像遞增的id或時間戳那樣,由於這裏沒有確定性順序,因此您無法可靠地獲取最後一個列。這些是你桌子上的所有列還是更多? – 2012-07-10 13:12:31

回答

0

好吧,更新我的回答:

明白了:

SELECT UserID, CourseName, Grade 
FROM yourtable 
WHERE UserID = '8' 
AND ID 
IN (
    SELECT MAX(ID) 
    FROM yourtable 
    GROUP BY CourseName 
) 
+0

我們有一個主鍵 – ronquiq 2012-07-10 13:21:28

+0

你可以請你張貼桌子的結構嗎? – Ruel 2012-07-10 13:22:02

+0

它是一個有很多列的大表 – ronquiq 2012-07-10 13:33:00

0

您可以添加另一列 修改日期

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

那麼你得到的最後更新等級爲當然

select * from tableName where course ='CourseA' 
order by modifiedDate desc limit 1 
0
select * from Course a 
where id=(select max(b.id) from Course b where b.CourseName=a.CourseName); 

Aftwerwards你可以通過ID組的結果,CourseName

未測試!