Quero selecionar várias linhas no bloco de seleção do PostgreSQL. Então tentei usar a função row para fazer uma consulta no PostgreSQL 15 assim:
select c.a from ( select row(1 as a, 2 as b) as c)
mostra erro ERROR: syntax error at or near "as
, eu também tentei:
select (c).a from ( select row(1 , 2 ) as c(a,b))
Estou esquecendo de alguma coisa? Ou como obter o valor da linha? Descobri que isso funciona bem:
select * from ( select row(1 , 2 ) ) a
Como conseguir o 1 ou o 2? Eu tentei:
select a[0] from ( select row(1 , 2 ) ) a
parece que não funcionou.
O resultado do
ROW()
construtor é um tipo de dado composto anônimo conhecido comorecord
:Os atributos de a
record
não têm nome. Mas oROW()
construtor atribui os nomesf1
ef2
assim por diante aos atributos. VejatransformRowExpr()
emsrc/backend/parser/parse_expr.c
:Você pode ver isso com SQL:
Você também pode usar os nomes em consultas:
Os parênteses
col
são necessários para que o analisador não o considere um alias de tabela.