我有一个带有jsonb列的表guest_group
。我想查询一个ID_Context
等于protelIO
的ID。
在此表的列:
[
{
"protelSurname":"Smith",
"servicio_tags":[
"protel-info"
],
"protelUniqueID":"[{\"ID\":\"294623726\",\"Type\":\"21\",\"ID_Context\":\"GHA\"},{\"ID\":\"4842148\",\"Type\":\"1\",\"ID_Context\":\"protelIO\"}]",
"protelGivenName":"Seth"
},
{
"value":"test",
"display_name":"Traces",
"servicio_tags":[
"trace"
]
}
]
我的尝试:
SELECT field ->>'protelUniqueID'
FROM guest_group gg
cross join lateral
jsonb_array_elements(custom_fields) AS field
WHERE value @> '{"servicio_tags": ["protel-info"]}'::jsonb
这给了我
[{"ID":"294623726","Type":"21","ID_Context":"GHA"},{"ID":"4842148","Type":"1","ID_Context":"protelIO"}]
我如何才能走最后一步,仅获得带有值键对ID
的{{1}}键的值?
感谢您的帮助!
答案 0 :(得分:1)
我认为这将为您带来理想的结果。也许不是很漂亮:-)
select * from (select jsonb_array_elements(f) from (
select (field ->>'protelUniqueID')::jsonb f
FROM guest_group gg,
lateral jsonb_array_elements(custom_fields) AS field
WHERE value @> '{"servicio_tags": ["protel-info"]}'::jsonb
) d(f)) dd(x)
where x->>'ID_Context'='protelIO';
最好的问候,
比尼亚尼