【问题标题】:SQL mapping ids to values in arraysSQL 将 id 映射到数组中的值
【发布时间】:2019-07-21 05:21:12
【问题描述】:

我一直在努力编写这个查询。说,我有映射表和带有 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,但我认为它并没有太大变化。

【问题讨论】:

    标签: sql postgresql dictionary select mapping


    【解决方案1】:

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

    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 是一个 dbfiddle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多