2011-10-16 78 views
1

我有我使用JET具有以下結構交互的Access數據庫:獲取最新的5項獨特

ID UsersID 
1 1 
2 2 
3 2 
4 3 
5 1 

我所試圖做的就是最新的唯一條目。例如:

ID UsersID 
5 1 
4 3 
3 2 

但是,我在混合分組和訂購時遇到了問題。我試過

SELECT DISTINCT [UsersID] FROM [Table] ORDER BY [ID] DESC 
SELECT [UsersID] FROM [Table] GROUP BY [UsersID] ORDER BY [ID] DESC 

但是,沒有運氣。注意:如果我從兩個查詢中刪除ORDER BY [ID] DESC,它都可以工作,但很明顯,排序並不如預期。

回答

2

您可以通過簡單的GROUP BY查詢獲取每個UserID的最大ID值。

SELECT UserID, Max(ID) AS MaxOfID 
FROM [Table] 
GROUP BY UserID; 

但是我不確定我是否瞭解訂單和最新的5個要求。如果最新的5指由上述查詢5個最大的ID值,然後嘗試這種方式...

SELECT TOP 5 UserID, Max(ID) AS MaxOfID 
FROM [Table] 
GROUP BY UserID 
ORDER BY 2 DESC; 

「表」是不是一個表的最好的名字。希望你的真實世界的情況使用不同的表名。 :-)

+0

不,「表」不是真名。有趣的是,如果我做'ORDER BY [ID] DESC',我得到一個錯誤,但是如果我做'ORDER BY 1 DESC',一切都很好 – steveo225

+0

不確定你在說什麼查詢。如果它是包含Max(ID)的GROUP BY,則可以在ORDER BY中使用Max(ID),而不是使用字段表達式的序號位置。 – HansUp

+0

我的意思是,我不能將GROUP BY和ORBER BY結合起來,並使用表格中的任何字段而不會出現錯誤,但我可以按照您的建議使用序號位置。 – steveo225

0
SELECT TOP 5 ID, UserID FROM 
table 
where UserID in (SELECT DISTINCT UserID from table ORDER BY ID DESC)