在多个列中选择具有相同值的行中的最新一行

  • 本文关键字:一行 最新 选择 sql
  • 更新时间 :
  • 英文 :


在我正在进行的一个项目中,有一些测量值存储在数据库中。测量由世界坐标(posX、posY、posZ)、站点标识号(stationID)和测量时间(时间)组成。

有时,由于不同的原因在现场重新进行测量,然后有几个测量具有相同的坐标和站id,但在不同的时间执行。

有没有办法写一个sql查询,这样我就可以获得所有的VALID测量值,即在坐标和站id相同的情况下,只获得最新的测量值?

我不太擅长SQL,所以我甚至不知道该在谷歌上搜索什么,所以即使你只知道我应该使用什么类型的命令,也会非常感激任何指针:)

编辑:

我的任务刚刚改变,显然站id无关紧要,只有坐标和时间。

另外,我使用的是DISQLite3,它实现了SQL-92。

是的,您可以在SQL中完成。

你似乎想为每个站和坐标的组合取最新的条目-看看GROUP BYROW_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

最新更新