本说明适用于:

SELECT INTO unsolvedNodes array_agg(DISTINCT idDestination)
FROM road 
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY(solvedNodes));

但我想用这种方式:

SELECT INTO unsolvedNodes array_agg(DISTINCT idDestination), lengths array_agg(length)
FROM road
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY(solvedNodes));

如何仅使用一条SELECT INTO指令设置多个变量?

推荐答案

PL/pgSQL中,你可以直接 Select SELECT INTOas many variables at once as you like.你只是把语法倒过来了:

SELECT INTO unsolvedNodes, lengths 
       array_agg(DISTINCT idDestination), array_agg(length)
FROM   road
WHERE  idOrigin = ANY(solvedNodes)
AND    NOT (idDestination = ANY(solvedNodes));

关键字INTO后面是目标变量列表,相应的SELECT列表.INTO条款的目标可以是(引用the manual here):

...记录变量、行变量或逗号分隔的

也:

INTO子句几乎可以出现在SQL命令中的任何地方.

这是not to be confusedSELECT INTO in the SQL dialect of Postgres,不应该再使用了.它违背了标准SQL,很可能最终会被删除.本手册积极劝阻继续使用:

在新代码中,最好使用CREATE TABLE AS.

Postgresql相关问答推荐

环境变量在Bash应用程序中没有出现

PostgreSQL:如何 for each 唯一的客户输入/更新列中的数据,并将其递增1直到表的末尾

Postgres 11没有强制执行外键约束?

数组格式类型的PostgreSQL日期

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

PostgreSQL临时文件的误解

在 postgresql 数据库 timestampz 中保留用户偏移量

Cloud SQL 时间点 数据驻留

UPDATE implies move across partitions

将 Postgres 与 Grails 一起使用

statement_date列是日期类型,但表达式是整数类型

PostgreSQL 不区分大小写的 SELECT 数组

SQLAlchemy 和多个进程的连接问题

plpgsql:使用 2 个 OUT 参数调用函数

Rails ActiveRecord - 如何获取两个日期之间的记录

如何使用 WITH RECURSIVE 子句进行 Select

使用 Postgresql 在过滤器中制作 Sqlalchemy 使用日期

PostgreSQL regexp_replace() 只保留一个空格

如何在 JPA 中使用 Postgres JSONB 数据类型?

pgadmin 错误:no password supplied