jsonb数组中查询某个key的值、根据表a中的某字段批量更新表b的字段

一、创建中间表(核心)

create table dev_mod_inventory_manage.instance_collection_name as 
    (select id,
        field225subfields
    from (select id,
              (jsonb_array_elements(field225 -> 'subfields')):: jsonb ->> 'a' field225subfields
        from (select id,
                    jsonb_array_elements(aa.jsonb -> 'content' -> 'fields') -> '225' field225
             from (select mri.id,
                          mri.jsonb
                   from dev_mod_inventory_manage.marc_records_info mri
                            left join dev_mod_inventory_manage.instance_info ii
                                      on mri.id = ii.id
                   where ii.collection_name is null
                     and length((mri.jsonb -> 'content' -> 'fields')::text) -
                         length(replace((mri.jsonb -> 'content' -> 'fields')::text, '"225"', '')) >
                         0) aa) bb
       where bb.field225 is not null) cc
    where cc.field225subfields is not null
   and length(trim(cc.field225subfields)) > 0);

二、更新前结果查询

在这里插入图片描述

三、更新

update dev_mod_inventory_manage.instance_info ii
set collection_name = icn.field225subfields
from dev_mod_inventory_manage.instance_collection_name icn
where ii.id = icn.id;

四、更新后查询对比

select icn.*,ii.collection_name from dev_mod_inventory_manage.instance_collection_name icn
left join dev_mod_inventory_manage.instance_info ii
on icn.id = ii.id;

在这里插入图片描述

本例可以借鉴的点在于:

  1. 从jsonb中的json数组中查到某个字段
  2. 更新a表中的某个字段到b表的某个字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值