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);