我有一个SQL问题。我使用SQL并不是很强大,并认为这里的某个人可以帮助我。任何帮助,将不胜感激。提前谢谢。
我有一个SQL表,包含以下内容:
id INT,
lat VARCHAR(255),
lon VARCHAR(255),
timestamp TIMESTAMP
此表格包含来自多个不同ID的几个gps位置。主键是ID和时间戳。
我需要做的是从每个唯一ID中选择最新的3组坐标。什么是实现这一目标的最佳方式?
答案 0 :(得分: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仍然不支持子查询中的/ order限制令人非常沮丧!第一次这会让这更简单......