我有一个包含JSON数据的表。在带有GROUP BY
子句的查询中,我想在结果集中获取所有JSON字段名称的数组。
我尝试了这样的查询:
SELECT array_agg(jsonb_object_keys(data))
FROM table
GROUP BY some_id
WHERE some_id = 3
输入数据,如
some_id | data
--------|---------------
3 | {"foo": "bar"}
4 | {"baz": 3}
3 | {"bar": 4}
我想收到:
array_agg
--------------
{'foo', 'bar'}
但它返回错误:ERROR: set-valued function called in context that cannot accept a set
似乎我需要以某种方式将setof text
(jsonb_object_keys
返回的内容)转换为array
,但我不知道如何。