sql - 如何在 postgresql 中选择最新数据
问题描述
我想用文件中的最新记录查询我的数据库。当我尝试这个时:
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
解决方案
如果您想要每行的最新行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
推荐阅读
- javascript - 使用 Ag-Grid 过滤 1 个单元格中的 2 个数据
- javascript - 角度 8 中的 AWS Amplify i18n 国际化
- ruby-on-rails - 如何从 Ruby on Rails 的下拉菜单中仅获取唯一值
- python - 如何在 Python 3.3+ 中将变量导入其他 python 文件?
- java - 如何在 Java 中使用 liquibase 对表和索引使用不同的表空间
- c# - 网站如何理解何时应该显示验证码?
- mongodb - mongodb 聚合并使用 $group 来求和并取出所有数据
- python - LSTM,Keras:推理模型应该有多少层?
- c# - 大字节数组 - 在字节数组中存储长度有什么好处?
- java - postgres序列不递增