PostgreSQL 查询基于连接条件和 max(date) 获取属性

Posted

技术标签:

【中文标题】PostgreSQL 查询基于连接条件和 max(date) 获取属性【英文标题】:PostgreSQL query to get attributes based on join condition and max(date) 【发布时间】:2013-11-17 02:07:25 【问题描述】:

我在下面有表格结构(屏幕)。我想要如图所示的结果查询:根据 row_wid 和 max(req_createdOn) 日期字段从第一个表和第二个表中,获取 req_attr1 和 req_attr_2 值。我正在使用 Greenplum 数据库(大致兼容 PostgreSQL 8.2)。

TIA。

第二屏: 如您所见,t1 中有两个 row_wid。对于 t2 中 t1 的每个 row_wid,我们需要检查最大的 req_createdOn 日期并获取 attr1、attr2 的 max(req_createdOn)。任何的想法?很抱歉没有把这个条件放在第一个屏幕上。非常感谢。

【问题讨论】:

【参考方案1】:

PostgreSQL 中有特殊的查询语法,distinct on 子句:

select distinct on (t2.Row_wid)
    t1.sn, t1.Geo, t1.Region,
    t1.req_attr_1, t1.req_attr_2
from table1 as t1
    inner join table2 as t2 on t2.Row_wid = t1.Row_wid
order by t2.Row_wid, t2.req_created_on desc

【讨论】:

以上是关于PostgreSQL 查询基于连接条件和 max(date) 获取属性的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL递归查询

linux下postgresql的连接数配置

PostgreSQL——查询优化——生成优化计划1

PostgreSQL——查询优化——生成优化计划1

PostgreSQL——查询优化——生成优化计划1

如何优化 Postgresql max_connections 和 node-postgres 连接池?