更新时间:2024-12-11 GMT+08:00

UNNEST

UNNEST可以将ARRAY或MAP展开成relation。

ARRAYS展开为单独一列,MAP展开为两列(key,value)。

UNNEST还可以与多个参数一起使用,将被展开成多列,行数与最高基数参数相同(其他列用空填充)。

UNNEST可以选择使用WITH ORDINALITY子句,在这种情况下,会在末尾添加一个额外的ORDINALITY列。

UNNEST通常与JOIN一起使用,可以引用JOIN左侧关系中的列。

  • 使用单独一列
    SELECT student, score FROM tests CROSS JOIN UNNEST(scores) AS t (score);
  • 使用多个列
    SELECT numbers, animals, n, a
    FROM (
    VALUES
    (ARRAY[2, 5], ARRAY['chicken', 'cat', 'bird']),
    (ARRAY[7, 8, 9], ARRAY['cow', 'fish'])
    ) AS x (numbers, animals)
    CROSS JOIN UNNEST(numbers, animals) AS t (n, a);