在 plpgsql 函数的某个步骤中,我需要将 2D 查询结果存储到数组变量中。
以下代码为标量完成工作(但对数组失败):
SELECT col_a, col_b
FROM my_table
WHERE col_c = condition
INTO var_a, var_b;
以下为 ONE 列和 ONE 数组变量完成了这项工作,但仅此而已:
SELECT ARRAY(
SELECT col_a
FROM my_table
WHERE col_c > condition
) INTO arr_a;
如何将 col_a、b、c、d... 中的多行存储到它们各自的数组变量中,而不必对每一列进行单独的查询?与第一个代码示例一样,但用于多行和数组。
用于
array_agg()
构建阵列。注意,它也会聚合NULL
,所以请确保这是您想要的。带有数据和示例函数的dbfiddle 。
我假设 on 的谓词对于和
col_c
都是相同的。如果它们需要单独的谓词,您将不得不使用或其他一些构造。我在小提琴中举了一个例子。col_a
col_b
FILTER
FILTER
输入表:
功能:
输出:
参考:https ://www.postgresql.org/docs/current/functions-aggregate.html