【发布时间】:2021-09-27 13:04:14
【问题描述】:
我有一个带有两个标签的表:“id”(int)和“value”(jsonb)。在“值”列中,我有另一个带有键 id_1、id_2 等的 json 对象(“props”)及其对应的值。
有没有办法计算 json 对象“props”具有特定键的行?例如“id_1”? 在此示例中,结果应为 2(第 1 行 + 第 4 行)
id | value
1 | {"name": "Jhon", "props": {"id_1": {"role": "role1", "class": "class1"}, "id_2": {"role": "role2", "class": "class2"}}}
2 | {"name": "Frank", "role": ["role1", "role2"]}
3 | {"name": "Bob", "props": {"id_3": {"role": "role3", "class": "class3"}, "id_4": {"role": "role4"}}}
4 | {"name": "Carl", "props": {"id_5": {"role": "role5", "class": "class5"}, "id_1": {"class": "class6"}}}
我尝试了类似的方法,但要使其正常工作,我也必须指定值,而不仅仅是键。并且每一行的值都可能改变。事实上结果是 1(错误,因为它必须是 2)
SELECT count(value)
FROM "myTable"
where value->'props' ->> 'id_1' = '{"role": "role1", "class": "class1"}'
【问题讨论】:
标签: json postgresql count jsonb