2014-04-01 74 views
0

我有一個SQL問題。我不太擅長使用SQL,並認爲這裏有人可以幫我一把。任何幫助,將不勝感激。提前致謝。從SQL表中選擇每個唯一ID中的3個

我有一個包含以下的SQL表:

id INT, 
lat VARCHAR(255), 
lon VARCHAR(255), 
timestamp TIMESTAMP 

此表由來自多個不同的ID的幾個GPS位置。主鍵是ID和時間戳。

我需要做的是從每個唯一的ID中選擇最新的3組座標。什麼是實現這一目標的最佳方式?

+0

可能重複[如何選擇每個類別的最新四個項目?](http://stackoverflow.com/questions/1442527/how-to-select-最新四項每類) –

+0

我希望重複的東西有點聰明 – Strawberry

+0

@BillKarwin我想通過其他帖子的答案來運行。我遇到的問題是A)就像我剛纔提到的那樣,我對SQL不太熟練,B)我正在嘗試爲一個表做這件事。所以,我並不需要這些連接。這似乎與我正在嘗試做的事情接近。我現在只是想弄明白。 – jwebster

回答

0

好了很多編輯後,下面肯定會工作。我測試了它,它很乾淨。

SELECT t.id, t.lat, t.lon, t.timestamp 
FROM table t 
LEFT OUTER JOIN table t2 
    ON (t.id = t2.id AND t.timestamp < t2.timestamp) 
GROUP BY t.id, t.lat, t.lon, t.timestamp 
HAVING COUNT(*) < 3 
ORDER BY t.id, t.timestamp desc; 

請注意,我覺得非常令人沮喪的是,Oracle和MySQL仍然不支持子查詢中的/ limits命令!本來會讓這個簡單得多第一次...

+0

嘗試運行此任何結果? – SS781

+0

我試圖運行,但我顯然必須改變我目前使用的MySQL版本才能使用它。我收到以下錯誤:錯誤代碼:1235.此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查詢' 我真的很感謝幫助和嘗試。事實證明,這個問題比我預期的要複雜一些。 – jwebster

+0

你正在使用哪個版本?它看起來像5+支持它:http://dev.mysql.com/doc/refman/5.0/en/any-in-some-subqueries.html – SS781

相關問題