小编典典

选择多个属性

sql

该指令有效:

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指令来设置多个变量?


阅读 195

收藏
2021-03-17

共1个答案

小编典典

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子句的目标可以是(在此处引用手册):

…记录变量,行变量或逗号分隔的简单变量和记录/行字段列表。

还:

INTO子句几乎可以出现在SQL命令中的任何位置。通常,它写在SELECT命令中select_expressions列表之前或之后,或者对于其他命令类型,写在命令末尾。建议您遵循此约定,以防PL
/ pgSQL解析器在以后的版本中变得更加严格。

不是混淆SELECT INTOPostgres里的SQL方言不应使用任何更多-。它违反标准SQL,最终很有可能会被删除。该手册积极劝阻其继续使用:

最好CREATE TABLE AS为此在新代码中使用。

2021-03-17