美文网首页
pgsql 分组查询取最新一条数据

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

作者: 坚持也是一种成功 | 来源:发表于2019-12-06 11:07 被阅读0次

    在业务中需要关联表查询,并且需要取出其中一个表的最新一条记录时,需要将数据进行分组,通过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

    相关文章

      网友评论

          本文标题:pgsql 分组查询取最新一条数据

          本文链接:https://www.haomeiwen.com/subject/acisgctx.html