本说明适用于:

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

如何只用一个“选择进入”指令设置多个变量?

最佳答案

在PL/pgSQL中,一次可以直接SELECT INTO任意多个变量。你刚才的语法倒过来了:

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命令中的任何地方。
通常它是在
SELECT命令中或在命令末尾选择表达式
对于其他命令类型。建议您遵循以下步骤
在将来的版本中,当PL/pgSQL解析器变得更严格时的约定。
这不能与SELECT INTO in the SQL dialect of Postgres混淆,因为没有人应该再使用它。它违背了标准SQL,很可能最终会被删除。本手册不鼓励继续使用:
最好在新代码中为此目的使用CREATE TABLE AS

关于sql - 选择多个属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16311634/

10-12 16:26