更新时间:2024-05-28 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['dog', 'cat', 'bird']),
(ARRAY[7, 8, 9], ARRAY['cow', 'pig'])
) AS x (numbers, animals)
CROSS JOIN UNNEST(numbers, animals) AS t (n, a);