繁体   English   中英

从SQL表中选择每个唯一ID中的3个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM