2011-06-30 35 views
0

我有一個數據集,如下所示:如何查找一組ID中每個ID的最近期限日期記錄,其中任何ID在特定日期都可以有多個記錄?

的第一列是一個自動增加的主鍵。第二列是ID號碼,可能是3個岩石,ID分別爲1,2和3。 (我可能應該使用標準的客戶和訂單示例,但是很好。)第三列是我扔石頭的日期。每次投擲岩石時我都會跟蹤日期,因此每個投擲時間都有多個ID(第二列)。

我想要一個查詢來返回每個ID的搖滾ID和最近日期。結果當然會有每個ID的記錄 - 最近訪問時間的記錄。

我正在努力與「DISTINCT」,「TOP 1」和「GROUP BY」子句,給出我想要的結果的可能組合。

+0

爲了什麼數據庫? –

+0

「我想要一個查詢返回搖滾ID」,什麼是搖滾ID? – niktrs

+0

@OMG小馬 - 我想數據庫無關,因爲我覺得答案會使用與數據庫無關的語法。 – Howiecamp

回答

1
SELECT id, max(date) 
FROM table 
GROUP BY id 

如果您還想要自動增量行ID然後

SELECT t1.rowid, t1.id, t1date 
FROM table t1 
JOIN (SELECT id,max(date) date FROM table1 t2 GROUP BY id) t2 ON t1.id = t2.id AND t1.date = t2.date 
+0

't2'別名應該應用於整個子查詢,除非我失去了一些東西。 –

+0

已修復,謝謝@Andriy通知 – niktrs

+0

我愛的時候有一個簡單的答案。我是否正確閱讀,您的第二個查詢是自連接?在第一個FROM子句中指定一個表名「table」,然後在第二個FROM子句中指定一個表名「table1」。這些是同一張表還是兩張表「table」和「table2」? – Howiecamp

相關問題