postgresql-将记录插入表并返回结果

ua4mk5z4  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(399)

以下代码段

SELECT data.generate_file_data(
   p.file_name,
   p.reference,
   p.extension,
   p.platform,
   p.library,
   p.path,
   p.is_temporary
) x
FROM files.main p;

返回一列名为generate\u file\u data的记录,如下所示

generate_file_data record
(reference, directory, platform, library)
(reference, directory, platform, library)
(reference, directory, platform, library)
(reference, directory, platform, library)
...

结果(generate\ file\ data()函数的返回类型)是以下类型的记录

id integer          directory text        platform text         library text
id                  directory             platform              library

它总是返回一个结果。我想知道有没有办法把这些唱片分成四部分,放在一个盒子里

TABLE(id text, directory text, platform text, library text)

所以结果将是一个表而不是一列记录,有点像这样

id integer          directory text        platform text         library text
id                  directory             platform              library
id                  directory             platform              library
id                  directory             platform              library
id                  directory             platform              library
...
wmomyfyw

wmomyfyw1#

感谢@gmb,他几乎得到了正确的答案,似乎cross-join-lateral允许我们为每一行调用generate\u file\u data()函数的结果,并将其粘合在一起

SELECT x.id, x.directory, x.library, x.platform
FROM files.main p
CROSS JOIN LATERAL data.generate_file_data(
   p.file_name,
   p.reference,
   p.extension,
   p.platform,
   p.library,
   p.path,
   p.is_temporary
) x;

我们在选择要返回的列时指定了它!

相关问题