如何在Postgresql中选择最新数据

问题描述 投票:0回答:1

我想用文件中的最新记录查询数据库。当我尝试这个:

select distinct(ts) from my_table

我有两个约会:

2020-03-10 22:54:08
2020-03-10 22:29:57

我的数据库模式:

Create table my_table
    (
        uuid text NULL,
        portfolio_family_id bigint NULL,
        ticker text NULL,
        size double precision NULL,
        secid bigint NULL,
        portfolio_name_id bigint NULL,
        ts timestamp NOT NULL DEFAULT now()
    );

您可以在uuid列中包含多个重复的uuid。我想获得ts是最新数据的所有行。我将如何查询?

select to_char(ts,'YYYY-MM-DD HH24:MI:SS') ts2 from my_table mt
inner join (select to_char(max(ts),'YYYY-MM-DD HH24:MI:SS') t2 from 
my_table) c2 on c2.t2 = mt.ts2

我收到错误:ts2列不存在。提示:也许您想参考mt:ts?

我想要与此日期相关的所有记录:2020-03-10 22:29:57

sql postgresql date greatest-n-per-group
1个回答
1
投票

如果要每uuid显示最新行,则:

select distinct on (uuid)
from mytable
order by uuid, ts desc

如果希望表中所有与最新日期相对应的行可用,则:

select t.*
from mytable t
where t.ts = (select max(t1.ts) from mytable t1)

您可以通过窗口功能获得相同的结果:

select (s.t).*
from (select t, rank() over(order by ts desc) rn from mytable t) s
where rn = 1 
© www.soinside.com 2019 - 2024. All rights reserved.