Sql 选择多个列中具有相同值的最新行
在我正在进行的一个项目中,有一些测量值存储在数据库中。测量由世界坐标(posX、posY、posZ)、站点标识号(stationID)和测量时间(time)组成 有时,由于不同的原因在现场重新进行测量,然后有多个测量具有相同的坐标和桩号,但在不同的时间执行 有没有一种方法可以编写一个sql查询,这样我就可以得到所有有效的测量值,即在坐标和站点id相同的情况下,只得到最新的测量值 我不太擅长SQL,所以我甚至不知道用谷歌搜索什么,所以即使您只知道我应该使用什么类型的命令,也非常欣赏任何指针:) 编辑: 我的任务刚刚改变,显然站点id不重要,只有坐标和时间Sql 选择多个列中具有相同值的最新行,sql,Sql,在我正在进行的一个项目中,有一些测量值存储在数据库中。测量由世界坐标(posX、posY、posZ)、站点标识号(stationID)和测量时间(time)组成 有时,由于不同的原因在现场重新进行测量,然后有多个测量具有相同的坐标和桩号,但在不同的时间执行 有没有一种方法可以编写一个sql查询,这样我就可以得到所有有效的测量值,即在坐标和站点id相同的情况下,只得到最新的测量值 我不太擅长SQL,所以我甚至不知道用谷歌搜索什么,所以即使您只知道我应该使用什么类型的命令,也非常欣赏任何指针:) 编
另外,我正在使用实现SQL-92的DISQLite3。是的,您可以在SQL中实现它 似乎您希望为每个车站和坐标组合获取最新条目-查看
分组依据
或行编号()
根据您的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
嗯,就像你说的,显然SQL变体是有帮助的。看起来所使用的数据库是基于SQL-92的,分区是不可能的。。。你在上面表达的逻辑是否可以在旧标准中实现?它起作用了!非常感谢,如果可以的话,我会给你一百个加分:)