从另一个数组列postgresql创建一个联接的数组列



我在表tt_test中有一个名为fields的数组列,如下所示:

fields
{A}
{B,C}
{D}
{E}

tt_config包含每个field:的field_id

field   field_id
A          1
B          2
C          3
D          4
E          5

从上面的两个表中,我需要创建第三个名为tt_output

fields    field_ids
{A}          {1}
{B,C}       {2,3}
{D}          {4}
{E}          {5}

postgresql/sql是一个相当新的版本,所以任何帮助/指针都将不胜感激!

一种方法是使用标量子查询:

select t.fields, 
array(select c.field_id
from tt_config c
where c.field = any(t.fields)) as field_ids
from tt_test t

您可以使用union运算符联接到表。要使用此运算符,必须有两个相同的标头。

您可以使用此查询

select fields , null as field_ids from tt_test
union
select fields , field_ids from tt_config

最新更新