JSON以下是我的表“逻辑”中JSONB类型的列之一,我想查询以检查type
中有多少行:QUESTION
({{1中的任何条目}}。
conditions
答案 0 :(得分:1)
如果您要检查整个表中"type": "QUESTION"
列的conditions
内jsonb
项出现的次数。
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;
使用您认为合适的查询