【问题标题】:Postgres Lateral Unnest - At Least 1 Value?Postgres横向松散-至少1个值?
【发布时间】:2021-05-21 14:49:01
【问题描述】:

我有一个表,其中包含jsonb[] 类型的可选fields 列。我正在使用横​​向 unnest 将这些字段分成几行,然后使用聚合以我想要的顺序再次组合它们。

SELECT id, name, ARRAY_AGG(v ORDER BY v->'priority' DESC) as fields
FROM results, LATERAL UNNEST(fields) AS f(v)
GROUP BY 1, 2

但是因为fields 是可选的,所以并非所有行都具有要取消嵌套的值。有没有办法横向取消嵌套至少一行,即使它是空的?或者有没有更好的方法在退出时将订单应用于jsonb[] 列,这样我就可以一起避免这种横向不嵌套?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    使用left join lateral

    SELECT 
        id
      , name
      , ARRAY_AGG(v ORDER BY v->'priority' DESC) as fields
    FROM results
    LEFT JOIN LATERAL UNNEST(fields) AS f(v) ON TRUE
    GROUP BY 1, 2
    

    【讨论】:

    • 谢谢。这正是我一直在寻找的。更新了我原来的删除3
    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多