[英]Select 3 of each unique ID from SQL table
我有一个SQL问题。 我对使用SQL并不是很坚强,并认为这里有人可以帮助我。 任何帮助,将不胜感激。 提前致谢。
我有一个包含以下内容的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仍然不支持子查询中的按顺序/限制! 第一次使它变得更简单...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.