我一直在努力编写此查询。说,我有映射表和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,但是我认为它并没有太大变化。
答案 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 <>小提琴。