我在 PostgreSQL 中有一个 jsonb 列,它可以具有以下 json 数组引用:
[
{
"endTime": {
"dayOfWeek": "TUESDAY",
"timeOfDay": {
"hours": 14,
"minutes": 30
}
},
"skillCode": "1000124",
"startTime": {
"dayOfWeek": "TUESDAY",
"timeOfDay": {
"hours": 9,
"minutes": 0
}
},
"premiumBreak": {
"hours": 0,
"minutes": 0
},
"standardBreak": {
"hours": 0,
"minutes": 30
}
},
{
"endTime": {
"dayOfWeek": "WEDNESDAY",
"timeOfDay": {
"hours": 14,
"minutes": 30
}
},
"skillCode": "1000176",
"startTime": {
"dayOfWeek": "WEDNESDAY",
"timeOfDay": {
"hours": 9,
"minutes": 0
}
},
"premiumBreak": {
"hours": 0,
"minutes": 0
},
"standardBreak": {
"hours": 0,
"minutes": 30
}
},
{
"endTime": {
"dayOfWeek": "THURSDAY",
"timeOfDay": {
"hours": 14,
"minutes": 30
}
},
"skillCode": "1000176",
"startTime": {
"dayOfWeek": "THURSDAY",
"timeOfDay": {
"hours": 9,
"minutes": 0
}
},
"premiumBreak": {
"hours": 0,
"minutes": 0
},
"standardBreak": {
"hours": 0,
"minutes": 30
}
}
]
我有 10k+ 条记录,必须根据以下标准获取记录:
具有此数组对象的记录具有-> 相同的“endTime”、“startTime”但不同的“skillCode”。
如何编写查询以获取具有上述条件的所有记录的列表。
我做了什么 :
- 我能够基于一个键获取基于 json 对象数组列的记录。
SELECT * FROM table t WHERE EXISTS (SELECT * FROM jsonb_array_elements(t.column) AS jsond WHERE (jsond ->> 'skillCode')::int = 1000128);
- 但是无法像我们通过循环和签入 Java 代码那样来比较对象之间的差异。