如何从含jsonb列的PostgreSQL表生成合并后的单一jsonb数组
合并PostgreSQL表中jsonb数组为单一数组
假设你的表名为your_table(请根据实际表名替换),表结构及数据如下:
CREATE TABLE your_table ( id INT, data JSONB ); INSERT INTO your_table VALUES (1, '["a", "b", "c"]'), (2, '["a", "e", "y"]'), (3, '["d", "e", "f"]');
要将data列的所有jsonb数组合并为一个单一数组,可使用以下两种方法:
方法1:拆分元素后聚合
先将每个jsonb数组拆分为独立元素,再将所有元素重新聚合成一个数组:
SELECT jsonb_agg(elem) AS merged_array FROM your_table, jsonb_array_elements(data) AS elem;
方法2:直接数组合并(PostgreSQL 12+)
PostgreSQL 12及以上版本支持jsonb_concat_agg函数,可直接对jsonb数组进行合并:
SELECT jsonb_concat_agg(data) AS merged_array FROM your_table;
执行上述任一语句,都会得到预期结果:
["a", "b", "c", "a", "e", "y", "d", "e", "f"]
注意:如果需要去除重复元素,可将
jsonb_agg(elem)替换为jsonb_agg(DISTINCT elem);若使用第二种方法,可对合并后的数组再做去重处理。
内容的提问来源于stack exchange,提问作者BOJIKA
相关产品推荐
相关产品推荐

