我有一個SQL問題。我不太擅長使用SQL,並認爲這裏有人可以幫我一把。任何幫助,將不勝感激。提前致謝。從SQL表中選擇每個唯一ID中的3個
我有一個包含以下的SQL表:
id INT,
lat VARCHAR(255),
lon VARCHAR(255),
timestamp TIMESTAMP
此表由來自多個不同的ID的幾個GPS位置。主鍵是ID和時間戳。
我需要做的是從每個唯一的ID中選擇最新的3組座標。什麼是實現這一目標的最佳方式?
我有一個SQL問題。我不太擅長使用SQL,並認爲這裏有人可以幫我一把。任何幫助,將不勝感激。提前致謝。從SQL表中選擇每個唯一ID中的3個
我有一個包含以下的SQL表:
id INT,
lat VARCHAR(255),
lon VARCHAR(255),
timestamp TIMESTAMP
此表由來自多個不同的ID的幾個GPS位置。主鍵是ID和時間戳。
我需要做的是從每個唯一的ID中選擇最新的3組座標。什麼是實現這一目標的最佳方式?
好了很多編輯後,下面肯定會工作。我測試了它,它很乾淨。
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命令!本來會讓這個簡單得多第一次...
可能重複[如何選擇每個類別的最新四個項目?](http://stackoverflow.com/questions/1442527/how-to-select-最新四項每類) –
我希望重複的東西有點聰明 – Strawberry
@BillKarwin我想通過其他帖子的答案來運行。我遇到的問題是A)就像我剛纔提到的那樣,我對SQL不太熟練,B)我正在嘗試爲一個表做這件事。所以,我並不需要這些連接。這似乎與我正在嘗試做的事情接近。我現在只是想弄明白。 – jwebster