我有一个包含两个名为id
和categoryArray
的属性的表,其中id
的类型为number
,categoryArray
为jsonb[]
列和架构如下所述:
"id": 1,
"categoryArray": [{
"Field1": "A",
"Field2": "A1"
},
{
"Field1": "B",
"Field2": "A2"
},
{
"Field1": "C",
"Field2": "A3"
}
]
该表格将包含多个记录id
,并且categoryArray
内有对象。
我想在PostgreSQL中查询id
Field1 = A
对象categoryArray
内的所有jsonb_array_elements
。
我尝试过使用Field1
,但无法达到预期效果。
我们是否有可能根据categoryArray
对象内的> list_dict=[{gene1:1, gene2:3, gene3:2}, {gene1:3, gene2:1, gene3:4},
> {gene1:2, gene1:1, gene2:1, gene3:3}]
进行查询。
答案 0 :(得分:0)
由于您已经在使用jsonb[]
,因此您可以使用以下查询来使用下标生成函数Field1 = A
来获取值为generate_subscripts()
的记录。
select
*
from
table
where
id in
(
select
id
from
(
select
id,
categoryArray,
generate_subscripts(categoryArray, 1) as s
FROM
table
) as i
where
categoryArray[s]->>'Field1' = 'A'
);