我有一个看起来像这样的表:
identifier | value | tstamp
-----------+-------+---------------------
abc | 21 | 2014-01-05 05:24:31
xyz | 16 | 2014-01-11 03:32:04
sdf | 11 | 2014-02-06 07:04:24
qwe | 24 | 2014-02-14 02:12:07
abc | 23 | 2014-02-17 08:45:24
sdf | 15 | 2014-03-21 11:23:17
xyz | 19 | 2014-03-27 09:52:37
我知道如何获取单个标识符的最新值:
select * from table where identifier = 'abc' order by tstamp desc limit 1;
但我想获取所有标识符的最新值。我该怎么做?
最佳答案
最简单(通常也是最快)的方法是在 Postgres 中使用 DISTINCT ON
:
SELECT DISTINCT ON (identifier) *
FROM tbl
ORDER BY identifier, tstamp DESC;
这也会返回一个有序列表。
SQLFiddle.
详情:
Select first row in each GROUP BY group?
关于sql - 仅选择表中每个标识符的最新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048034/