【问题标题】:How to get the row with max timestamp in postgres?如何在postgres中获取具有最大时间戳的行?
【发布时间】:2013-01-17 04:13:39
【问题描述】:

我需要在 postgresql 中获取具有最大时间戳的一行信息。下面是这个问题的演示:

drop table Mytable cascade
create table MyTable (usr char(1), event_dt timestamp without time zone);
insert into mytable values ('A','01-JAN-2009 11:10:11');
insert into mytable values ('A','02-JAN-2009 11:10:22');
insert into mytable values ('B','02-JAN-2009 01:01:59' );
insert into mytable values ('C', '31-DEC-2008 02:02:02');
insert into mytable values ('D', '31-DEC-2008 03:03:03');

如果我这样做了

select max(event_dt) from (
select usr,event_dt from mytable where usr= 'A') as foo 

这是我需要的,但它只返回 event_dt "2009-01-02 11:10:22"

我想要该行中的 usr 以及 sa event_dt。我该怎么做?

【问题讨论】:

  • 如果有几行带有max(event_dt),你想做什么?
  • 我回滚到你以前的版本。请不要添加另一个问题,为此开始一个 new 问题。如果需要,您可以在编辑历史记录中找到您的文本。另外:许多密切相关的问题。 Here's one.

标签: sql postgresql timestamp max


【解决方案1】:

我只想...

SELECT usr, event_dt FROM mytable ORDER BY event_dt DESC LIMIT 1

【讨论】:

  • 时间差?我对 OP 和 Najzero 解决方案的大约 10 亿行数据进行了时序测试。执行 Najzero 的解决方案也有大约 25% 的性能提升。所以它不仅看起来干净而且速度更快(可能是出于显而易见的原因)
猜你喜欢
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2014-01-09
相关资源
最近更新 更多