本说明适用于:
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/