我有一个返回 json 列表的查询:
select type.value -> 'components' as json_data
from manifests m left join
jsonb_array_elements(m.json_data->'type') as type on true
这将返回以下数据
[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]
如果我将它用作文本,我可以进一步进行:
select *
from jsonb_array_elements(
'[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]' )
给
{"name": "xxx", "version": "1.1"}
{"name": "xxx2", "version": "1.2"}
但是我如何使用第一个查询达到相同的目的?我无法使用子查询使其工作
更新:我的原始数据如下所示:
{
"lastUpdated": 1569393969656,
"type": [
{
"components": [
{
"name": "xxx",
"version": "1.1"
},
{
"name": "xxx2",
"version": "1.2"
}
],
"description": "xxx"
}
]
}
谢谢
您可以jsonb_array_elements()
两次应用功能:
select jsonb_array_elements(elm) as json_data
from
(
select jsonb_array_elements(json_data -> 'type') -> 'components' as elm
from manifests ) q
能够在子查询中提取相关的数组元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句