postgresql - 在 Postgres 数据库的 JSONB 数组中查询
问题描述
JSON 下面是我的表“逻辑”中 JSONB 类型的列之一,我想查询以检查有多少行type
:(中的QUESTION
任何条目conditions
)。
{
"name": null,
"conditions": [
{
"type": "QUESTION",
"question": {
}
},
{
"type": "QUESTION",
"question": {
}
},
{
"type": "FIELD",
"question": {
}
}
],
"expression": "A"
}
解决方案
如果要检查"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;
使用您认为适合您的查询
推荐阅读
- reactjs - React-Native Expo 将图像从缓存移动到应用程序文件夹错误
- azure - Azure 应用程序网关和证书 SAN
- html - 如何使用 VBA 在 Internet Explorer 中没有 elementID 的字段中输入值
- jenkins - Github PR 触发多个 Jenkins 作业但只报告最后一个作业的状态
- windows - 如何检查我正在运行哪个版本的 WSL2?
- c++ - arma::SpMat
在 RcppArmadillo 函数中输入 - go - 在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度
- android - android 11 kotlin 中的包可见性
- css - 加载后将 div 保留在视口中
- python - 与 ROS 点云的距离太慢,如何优化?