我有一个jsonb
名为data
的表中的列reports
。这是report.id = 1
看起来的样子
[
{
"Product": [
{
"productIDs": [
"ABC1",
"ABC2"
],
"groupID": "Food123"
},
{
"productIDs": [
"EFG1"
],
"groupID": "Electronic123"
}
],
"Package": [
{
"groupID": "Electronic123"
}
],
"type": "Produce"
},
{
"Product": [
{
"productIDs": [
"ABC1",
"ABC2"
],
"groupID": "Clothes123"
}
],
"Package": [
{
"groupID": "Food123"
}
],
"type": "Wearables"
}
]
这report.id = 2
看起来像:
[
{
"Product": [
{
"productIDs": [
"XYZ1",
"XYZ2"
],
"groupID": "Food123"
}
],
"Package": [],
"type": "Wearable"
},
{
"Product": [
{
"productIDs": [
"ABC1",
"ABC2"
],
"groupID": "Clothes123"
}
],
"Package": [
{
"groupID": "Food123"
}
],
"type": "Wearables"
}
]
我正在尝试获取表中所有条目的列表,reports
其中至少一个data
列的元素具有以下内容:
type
= Produce
AND 其中数组的Product
任何元素或Product
数组的任何元素都groupID
以Food
所以从上面的例子中这个查询将只返回第一个索引,因为
- 类型 =
Produce
- groupID 以数组
Food
的第一个元素开头Product
第二个索引将被过滤掉,因为 type 不是Produce
。
我不知道如何查询做 AND 查询groupID
。这是我试图获取类型的所有条目Produce
select * from reports r, jsonb_to_recordset(r.data) as items(type text) where items.type like 'Produce';