Arrays Postgresql jsonb集合列表的并集
我希望可以直接做到以下几点: 给定的行包含表单的jsonbArrays Postgresql jsonb集合列表的并集,arrays,postgresql,jsonb,Arrays,Postgresql,Jsonb,我希望可以直接做到以下几点: 给定的行包含表单的jsonb { 'a':"hello", 'b':['jim','bob','kate'] } 我希望能够从表中获取所有“b”字段(如从mytable中选择jsondata->“b”),然后形成一个列表,其中包含至少一个“b”字段中出现的所有字符串。(基本上是一个集合并集。) 我该怎么做?或者我最好使用python脚本来提取“b”项,在那里进行集合合并,然后将其存储回其他地方的数据库?这将为您提供json列表“b”中元素的联合集合 SEL
{
'a':"hello",
'b':['jim','bob','kate']
}
我希望能够从表中获取所有“b”字段(如从mytable中选择jsondata->“b”),然后形成一个列表,其中包含至少一个“b”字段中出现的所有字符串。(基本上是一个集合并集。)
我该怎么做?或者我最好使用python脚本来提取“b”项,在那里进行集合合并,然后将其存储回其他地方的数据库?这将为您提供json列表“b”中元素的联合集合
SELECT array_agg(a order by a)
FROM (SELECT DISTINCT unnest(txt_arr) AS a FROM
(SELECT ARRAY(SELECT trim(elem::text, '"')
FROM jsonb_array_elements(jsondata->'b') elem) AS txt_arr
FROM jtest1)y)z;
查询说明:
- 从b获取列表,作为
jsondata->'b'
- 从
函数将JSON数组扩展为一组JSON值jsonb\u array\u elements()
- 从
函数修剪元素中的trim()
部分“
- 修剪后,使用
函数再次转换为数组array()
- 通过使用
函数取消对其进行测试来获取不同的值unnest()
- 最后使用
来形成预期结果array\u agg()
SELECT array_agg(a order by a)
FROM (SELECT DISTINCT unnest(txt_arr) AS a FROM
(SELECT ARRAY(SELECT trim(elem::text, '"')
FROM jsonb_array_elements(jsondata->'b') elem) AS txt_arr
FROM jtest1)y)z;
查询说明:
- 从b获取列表,作为
jsondata->'b'
- 从
函数将JSON数组扩展为一组JSON值jsonb\u array\u elements()
- 从
函数修剪元素中的trim()
部分“
- 修剪后,使用
函数再次转换为数组array()
- 通过使用
函数取消对其进行测试来获取不同的值unnest()
- 最后使用
来形成预期结果array\u agg()