在Postgres数据库的JSONB数组中查询

时间:2019-01-13 12:43:43

标签: postgresql json-query

JSON以下是我的表“逻辑”中JSONB类型的列之一,我想查询以检查type中有多少行:QUESTION({{1中的任何条目}}。

conditions

1 个答案:

答案 0 :(得分:1)

如果您要检查整个表中"type": "QUESTION"列的conditionsjsonb项出现的次数。

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;

使用您认为合适的查询

Demo