SQL将ID映射到数组中的值

时间:2019-02-27 13:10:18

标签: sql postgresql dictionary select mapping

我一直在努力编写此查询。说,我有映射表和ID数组的表。我想查询带有值数组的表:

id|value     id_arr            value_arr
--+-----    ---------          ---------
 1|  4      {1, 2}       ->    {4, 5}
 2|  5      {1, 3}             {4, 7}
 3|  7      {1, 2, 3}          {4, 5, 7}

有人知道这个吗?

我正在使用PostgreSQL,但是我认为它并没有太大变化。

1 个答案:

答案 0 :(得分:0)

您可以取消嵌套值并重新聚合:

select t2.*,
       (select array_agg(t1.val)
        from unnest(t2.arr) arr_val join
             t1
             on t1.id = arr_val
       ) as arr_ids
from t2 ;

如果要保留原始顺序,可以使用with ordinality

select t2.*,
       (select array_agg(t1.val order by n)
        from unnest(t2.arr) with ordinality u(arr_val, n) join
             t1
             on t1.id = arr_val
       ) as arr_ids
from t2 ;

Here是db <>小提琴。