在 Postgres 数据库的 JSONB 数组中查询
Query in JSONB array of Postgres database
下面JSON是我的table'logic'中类型JSONB的列之一,我想查询检查有多少行type
:QUESTION
(conditions
内的任何条目)。
{
"name": null,
"conditions": [
{
"type": "QUESTION",
"question": {
}
},
{
"type": "QUESTION",
"question": {
}
},
{
"type": "FIELD",
"question": {
}
}
],
"expression": "A"
}
如果要检查 "type": "QUESTION"
条目在 jsonb
列的 conditions
中出现的次数 table。
select count(*) FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
如果您想检查 "type": "QUESTION"
条目在每行 conditions
中出现的次数。
select jsonb_col,count(*) FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
group by jsonb_col
如果你想检查有多少行至少有一个符合条件的条目
'type' = 'QUESTION'
,
select count(*) FROM
(
select DISTINCT jsonb_col FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
)s;
使用您认为适合您的查询
下面JSON是我的table'logic'中类型JSONB的列之一,我想查询检查有多少行type
:QUESTION
(conditions
内的任何条目)。
{
"name": null,
"conditions": [
{
"type": "QUESTION",
"question": {
}
},
{
"type": "QUESTION",
"question": {
}
},
{
"type": "FIELD",
"question": {
}
}
],
"expression": "A"
}
如果要检查 "type": "QUESTION"
条目在 jsonb
列的 conditions
中出现的次数 table。
select count(*) FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
如果您想检查 "type": "QUESTION"
条目在每行 conditions
中出现的次数。
select jsonb_col,count(*) FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
group by jsonb_col
如果你想检查有多少行至少有一个符合条件的条目
'type' = 'QUESTION'
,
select count(*) FROM
(
select DISTINCT jsonb_col FROM logic CROSS JOIN LATERAL
jsonb_array_elements(jsonb_col->'conditions')as j(typ)
WHERE j->>'type' = 'QUESTION'
)s;
使用您认为适合您的查询