【发布时间】:2017-03-10 04:41:21
【问题描述】:
我确实想出了如何从数组中删除单个记录的值,但是如何为其中的许多记录执行此操作。问题在于我如何使用子查询。因为它必须只返回单个元素。也许我的方法是错误的。
给定输入:'{attributes:['is_new', 'is_old']}' 预期结果 '{attributes: ['is_old']}' #remove 'is_new' from jsonb array 真实例子: # 货号 |特性 # --------+-------------------------------- # nu3_1 | { + # | "名称": "silly_hodgkin", + # | “类型”:“食物”,+ # | “属性”:[+ # | "is_gluten_free", + # | "is_lactose_free", + # | "是新的" + # | ] + # | } #删除单个数组元素的查询: 选择 c.sku, jsonb_agg(el) FROM 目录 c JOIN (select sku, jsonb_array_elements_text(properties->'attributes') as el from catalog) c2 ON c.sku=c2.sku where el 'is_new' 按 c.sku 分组; #更新删除单个记录中单个数组元素的查询 更新目录 SET properties=jsonb_set(properties, '{attributes}', ( 选择 jsonb_agg(el) 来自 目录 c JOIN (select sku, jsonb_array_elements_text(properties->'attributes') as el from catalog) c2 ON c.sku=c2.sku WHERE el 'is_new' AND c.sku='nu3_1' 按 c.sku 分组 ) ) 哪里 sku='nu3_1';问题又来了。多条数据库记录如何按值删除jsonb数组元素?
【问题讨论】:
标签: arrays json postgresql jsonb