sql - PostgreSQL - 将记录插入表并返回结果
问题描述
以下代码片段
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_file_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
...
解决方案
感谢@GMB,他几乎得到了正确的答案,似乎 CROSS JOIN LATERAL 允许我们为每一行调用 generate_file_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;
之后我们在 SELECT 中指定我们想要返回哪些列!
推荐阅读
- javascript - Node.js:等待需求
- c# - Wait for Mass Transit saga to finish
- javascript - 将带有 ajax 的数组传递给自定义端点
- javascript - RxJS zip() 运算符无法按预期工作。它总是在不触发任何值的情况下完成
- statistics - 增长率分析,计算方法
- ruby - 如何使用“for”并更改红宝石哈希中的值?
- python - 用于训练和推理的 tf.data.Dataset 可馈送迭代器
- python - 将字典列表转换为数据框
- python - 为每个文件运行气流 DAG
- json - jsonPath - 如何通过匹配子字符串过滤结果