在我正在进行的项目中,存储在数据库中的测量值。测量由世界坐标(posX,posY,posZ),台站识别号码(stationID)和测量时间(时间)组成。
有时,由于不同的原因,在现场重新进行测量,然后有几个具有相同坐标和站ID但在不同时间执行的测量。
有没有办法编写一个sql查询,这样我得到所有的VALID测量结果,即只有在坐标和工作站ID相同的情况下才能获得最新的测量结果?
我不是很擅长SQL,所以我甚至都不知道要google什么,所以即使你只知道我应该使用什么类型的命令,任何指针都非常受欢迎:)
编辑:
我的任务刚刚改变,显然站点ID无关紧要,只有坐标和时间。
另外,我使用的是实现SQL-92的DISQLite3。
答案 0 :(得分:1)
是的,您可以在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