在我正在进行的一个项目中,有一些测量值存储在数据库中。测量由世界坐标(posX、posY、posZ)、站点标识号(stationID)和测量时间(时间)组成。
有时,由于不同的原因在现场重新进行测量,然后有几个测量具有相同的坐标和站id,但在不同的时间执行。
有没有办法写一个sql查询,这样我就可以获得所有的VALID测量值,即在坐标和站id相同的情况下,只获得最新的测量值?
我不太擅长SQL,所以我甚至不知道该在谷歌上搜索什么,所以即使你只知道我应该使用什么类型的命令,也会非常感激任何指针:)
编辑:
我的任务刚刚改变,显然站id无关紧要,只有坐标和时间。
另外,我使用的是DISQLite3,它实现了SQL-92。
是的,您可以在SQL中完成。
你似乎想为每个站和坐标的组合取最新的条目-看看GROUP BY
或ROW_NUMBER()
根据您的SQL变体(如果指定它会很有帮助),比如。。。
select *
from
(Select *,
row_number() over (Partition by coordinates, stationid order by measurementtime desc) rn
from yourtable
) v
where rn = 1
无排名功能
select yourtable.*
from yourtable
inner join
(
select coordinate, MAX(time) maxtime from yourtable
group by coordinate
) v
on yourtable.coordinate = v.coordinate
and yourtable.time = v.maxtime