多个不同的数组,其中有空值

顺式

我有一个包含三个一维数组的表(还有一个主键和其他几列,但它们并不重要)。所有这些数组都可以是NULL数组在每一列中确实经常重叠:许多值位于多个数组中。我现在想要一个查询,该查询返回一行,其中三个数组是整个数组列的不同值。

像这样创建测试表

DROP TABLE IF EXISTS my_array_test;
CREATE TABLE IF NOT EXISTS my_array_test(id integer, my_txt text[], my_int1 integer[], my_int2 integer[]);
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (1,'{text1,text2}','{1,2}','{21,22}');
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (2,null,'{7,8}','{21,22}');
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (3,'{text2,text4}',null,null);
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (3,null,null,'{17,18}');
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (4,'{text1,text2}','{1,2,3}','{21,22}');
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (5,'{text1,text5}','{1,5}','{21,25}');
INSERT INTO my_array_test(id, my_txt, my_int1, my_int2) VALUES (6,null,null,null);

结果是像

select * from my_array_test ;
 id |    my_txt     | my_int1 | my_int2
----+---------------+---------+---------
  1 | {text1,text2} | {1,2}   | {21,22}
  2 |               | {7,8}   | {21,22}
  3 | {text2,text4} |         |
  3 |               |         | {17,18}
  4 | {text1,text2} | {1,2,3} | {21,22}
  5 | {text1,text5} | {1,5}   | {21,25}
  6 |               |         |
(7 rows)

预期结果将是{text1,text2,text4,text5},{1,2,7,8,2,5},{21,22,17,18,25}(数组中的顺序并不重要。)

我试过的是这样的多个横向查询:

SELECT 
    array_agg(DISTINCT t) AS text_array_result,
    array_agg(DISTINCT i1) AS integer_array1_result,
    array_agg(DISTINCT i2) AS integer_array2_result 
FROM 
    my_array_test,
    unnest(my_txt) AS t,
    unnest(my_int1) AS i1,
    unnest(my_int2) AS i2

但是,这将杀死仅位于其中包含NULL数组的行中的所有值

我也尝试过unnest(COALESCE(my_txt,'{}')) AS t,,依此类推,但无济于事。

克林

您可以使用本文中介绍的我的自定义聚合

select
    array_merge_agg(my_txt) AS text_array_result,
    array_merge_agg(my_int1) AS integer_array1_result,
    array_merge_agg(my_int2) AS integer_array2_result 
from 
    my_array_test;

     text_array_result     | integer_array1_result | integer_array2_result 
---------------------------+-----------------------+-----------------------
 {text1,text2,text4,text5} | {1,2,3,5,7,8}         | {17,18,21,22,25}
(1 row) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

参数化的junit测试,其中有多个测试

来自分类Dev

MySQL查询运行缓慢,其中有多个条件

来自分类Dev

其中有多个SELECT语句的SQL IN语句

来自分类Dev

如何循环其中有空间的文件夹中的文件

来自分类Java

从地图提取密钥其中有没有重复的值

来自分类Dev

PHP preg_split添加了一个空数组键,该键不能被array_filter清除,因为其中有一个“空格”

来自分类Dev

管道分隔的文件,其中有空条目;转换为制表符分隔的,中间用'<empty>'

来自分类Dev

具有空值的localeCompare数组

来自分类Dev

如何查找此数组是否有重复的对象,其中有另一个数组

来自分类Javascript

仅当其中有项目时才渲染组件

来自分类Dev

当其中有文字时div折叠

来自分类Dev

分割出其中有孔的对象

来自分类Dev

如何创建表,表头在左侧,其中有多行

来自分类Mysql

MySQL的 - 获取所有记录,其中有一个字段的值相等,进而在其他领域有一个非空值

来自分类Dev

恐慌:同步:否定的WaitGroup计数器,其中有多个请求到达同一端点

来自分类Dev

连接多个具有空值的列

来自分类Dev

SQL连接具有空值的多个字段

来自分类Dev

如果不知道其中有多少个级别,请按键将平面数组分组为多维数组。的PHP

来自分类Dev

PostgreSQL JSON构建没有空值的数组

来自分类Dev

删除列表中有空列表

来自分类Java

Map.containsKey()在没有空值的Map中有用吗?

来自分类Dev

在C#数组中有空索引是否不明智?

来自分类Java

如何截获所有的库类使用Spring AOP其中有@Repository注解

来自分类Dev

Bash数组,元素中有空格

来自分类Dev

bash-压缩多个文件,从变量中获取参数,其中一个名称中有空格

来自分类Java

发布一个实体与Spring数据REST其中有关系

来自分类Linux

sed插入行,其中有到特定行的空格

来自分类Dev

knitr代码块的宽度,其中有到源()的调用中的组块

来自分类Dev

当其中有一个按钮时,使div背景可点击

TOP 榜单

热门标签

归档