postgresql中将复数类型集合其中的字段拼接成一个字符串,string_agg

postgresql中将复数类型集合其中的字段拼接成一个字符串,string_agg

原本查出的结果

在这里插入图片描述

想要的结果

在这里插入图片描述

关键函数,string_agg,unnest

string_agg:将集合数据按指定字符串拼接成一个字符串,多行合并
unnest:将复合类型集合字段,转为临时表

先看看初步效果

select id, string_agg(name, ',') from 
(
select id, ((unnest(feature_name)).name)  as name from meta_contact_details
) s GROUP BY id

结果:这里,没有名称的没有被查出来
在这里插入图片描述
原因是unnest跳过了null所在行

改进一下

加上case when then

select id, string_agg(name, ',') from 
(
select id, (case when feature_name is null then null else ((unnest(feature_name)).name) end)  as name from meta_contact_details
) s GROUP BY id

结果
在这里插入图片描述
这里如果查的字段多了话就要重复,不安逸,换一种思路

最终sql

select id,
(select string_agg(name, ',') from 
(
select ((unnest(feature_name)).name)  as name 
) s) as names
from meta_contact_details 
GROUP BY id

效果:
在这里插入图片描述
=======================以下为修改内容==================
使用上述sql在不行查id字段的时候会报错
在这里插入图片描述
这里两种方式,一种是去掉group by
第二种是在group by 后将names字段加上

select guid,
(select string_agg(name, ',') from 
(
select ((unnest(feature_name)).name)  as name 
) s) as names
from meta_contact_details 
select guid,
(select string_agg(name, ',') from 
(
select ((unnest(feature_name)).name)  as name 
) s) as names
from meta_contact_details 
GROUP BY guid,names
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值