You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何提取复合类型数组各元素的第一个字段?

提取复合类型数组中指定字段并重新聚合数组

我来帮你搞定这个需求!针对你定义的复合类型数组,我们可以通过拆分数组→提取目标字段→重新聚合的三步操作来实现你想要的结果。

解决方案SQL

直接用这条语句就能得到你期望的输出:

SELECT array_agg(elem.a) AS pv
FROM f, unnest(pv) AS elem;

语句解释

  • unnest(pv):把pv列里的复合类型数组拆分成单独的行,每一行对应一个p类型的元素;我们给这个拆分后的结果起个别名elem。
  • elem.a:从每个拆分出来的复合类型元素中提取a字段的值。
  • array_agg(elem.a):把同一原始行拆分出来的所有a字段值重新聚合回数组,正好对应你想要的输出格式。

验证结果

执行这条语句后,输出会和你期望的一致:

pv
--------
 {10,30}
 {1}

如果你后续表中添加了其他字段,需要按原行分组聚合的话,只需要加上GROUP BY子句即可,比如假设表有id字段:

SELECT id, array_agg(elem.a) AS pv
FROM f, unnest(pv) AS elem
GROUP BY id;

内容的提问来源于stack exchange,提问作者Shore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:05:03