2013-08-20 108 views
2

我有一個訪問數據庫,我很清楚設計的設計很糟糕,不幸的是這是我必須使用的。它看起來有點像下面這樣:SQL按日期獲取最後n個唯一條目

(行號是不是在數據庫中的列,它只是在那裏幫助我描述我後)

Row# ID  Date  Misc 
1  001 01/8/2013  A 
2  001 01/8/2013  B 
3  001 01/8/2013  C 
4  002 02/8/2013  D 
5  002 02/8/2013  A 
6  003 04/8/2013  B 
7  003 04/8/2013  D 
8  003 04/8/2013  D 

我想要做的獲取最後n個(按日期)'條目'輸入的所有信息,其中'條目'是具有唯一ID的所有行。

所以,如果我想最後1項我會行6,7和8的最後兩個參賽作品將獲得我行4-8等

我試圖讓SN在一個需要然後選擇所有這些SN出現的條目,但我無法讓它工作。任何幫助讚賞。

謝謝。

回答

1

適當的訪問語法:

select * 
from t 
where ID in (select top 10 ID 
      from t 
      group by ID 
      order by max([date]) desc 
      ) 
+0

感謝。我正在取得進展,但是這仍然給我帶來了可疑的數據。 你知道爲什麼當我只運行TOP 1的子查詢時,我會得到8個ID值嗎? – KorbenDallas

+0

我已經完成了。看起來001-1和001-2的兩個值看起來是一樣的。謝謝。 – KorbenDallas

1

我認爲這將工作:

select * 
from table 
where Date in (
    select distinct(Date) as unique_date from table order by unique_date DESC limit <num> 
) 

的想法是使用子選擇與限制只能識別你所關心的日期。

編輯:一些數據庫不允許在一個子查詢(我看着你,MySQL)的限制。在這種情況下,您必須從子查詢中創建一個臨時表,然後從中選擇*。

相關問題