gpt4 book ai didi

arrays - 聚合连接 jsonb 数组

转载 作者:行者123 更新时间:2023-11-29 13:09:35 25 4
gpt4 key购买 nike

有一个名为 example_table 的表,其中有一列名为 example_column,类型为 JSONB,列中的每个值都是一个数组。

让 2 行中的值为:[1, 2] 和 [3]

如何聚合连接 example_column 中的值?

结果应该是:[1, 2, 3]

我尝试使用:

select json_agg(example_column) from example_table

但是返回 [[1, 2,], [3]]

最佳答案

使用函数jsonb_array_elements(example_column),示例:

with example_table(example_column) as (
values
(jsonb '[1, 2]'),
(jsonb '[3]')
)

select jsonb_agg(value)
from example_table
cross join jsonb_array_elements(example_column)

jsonb_agg
-----------
[1, 2, 3]
(1 row)

更新。您可以定义聚合元素的排序顺序和/或删除重复项,例如:

with example_table(id, example_column) as (
values
(1, jsonb '[1, 2]'),
(2, jsonb '[3]'),
(3, jsonb '[3, 1]')
)

select
jsonb_agg(value order by id) as agg1,
jsonb_agg(value order by value) as agg2,
jsonb_agg(distinct value order by value) as agg3
from example_table
cross join jsonb_array_elements(example_column)

agg1 | agg2 | agg3
-----------------+-----------------+-----------
[1, 2, 3, 3, 1] | [1, 1, 2, 3, 3] | [1, 2, 3]
(1 row)

关于arrays - 聚合连接 jsonb 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56740890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com