将json字段名称聚合到数组中

时间:2018-02-16 12:21:33

标签: postgresql

我有一个包含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 textjsonb_object_keys返回的内容)转换为array,但我不知道如何。

0 个答案:

没有答案