选择最新的测量结果

时间:2016-03-10 15:02:47

标签: sql linux postgresql ubuntu

我有一个包含测量结果的PostgreSQL数据库表。每个测量都有一个测量时间列,一个包含该测量结果的度量列和一个标识所测量对象的标识符。

由于该表包含同一对象的多个测量值,因此我只想选择每个对象的最新测量值。

我的方法是通过标识符和乱码时间降序排序,最后消除仅保留每个标识符的第一行的重复项。我也只想要返回指标列。怎么做?

SELECT DISTINCT ON(id) FROM measurements ORDER by id, messon DESC LIMIT 10;

此查询不仅需要一段时间,结果行也只是波浪号(~)符号:

(10 rows)

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~

我正在使用Ubuntu

1 个答案:

答案 0 :(得分:2)

您忘了说想要查看哪些列:

SELECT DISTINCT ON(id) * FROM measurements ORDER by id, messon DESC LIMIT 10;

请注意声明中的星号。

关于速度问题,您是否在id和messon列上创建了ordered index

CREATE INDEX CONCURRENTLY id_messon_desc_idx ON measurements (id DESC, messon DESC);