pgsql 分组查询取最新一条数据

在业务中需要关联表查询,并且需要取出其中一个表的最新一条记录时,需要将数据进行分组,通过ARRAY_AGG函数。

下面的例子是,查询出每个用户的最新一个订单。这里没有采用网上说的子查询是考虑到如果数据量过大的时候,子查询将会消耗大量的处理时间。

SELECT
user_as.*,order_as.table_order_pk_id
FROM
(
SELECT
order_as .table_user_pk_id,
(
SELECT
UNNEST (
ARRAY_AGG (
order_as .table_order_pk_id
ORDER BY
order_as .createdate DESC
)
)
LIMIT 1
) table_order_pk_id
FROM
order as order_as
GROUP BY
order_as .table_user_pk_id
) tmp_table,
user AS user_as,
order AS order_as
WHERE
tmp_table.table_user_pk_id = user_as.table_user_pk_id
AND tmp_table.table_order_pk_id= order_as.table_order_pk_id

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容