使用for循环postgresql创建表
我有一个函数test_func(),它接受一个参数(假设参数名为X)并返回一个表。现在,我有一个输入列表(来自子查询),我希望将其传递到参数X中,并在表中收集所有调用结果 在Python中,我将执行以下操作使用for循环postgresql创建表,postgresql,function,loops,Postgresql,Function,Loops,我有一个函数test_func(),它接受一个参数(假设参数名为X)并返回一个表。现在,我有一个输入列表(来自子查询),我希望将其传递到参数X中,并在表中收集所有调用结果 在Python中,我将执行以下操作 # create empty list all_results = [] for argument in (1,2,3): result = test_func(argument) # Collect the result all_results.append(result)
# create empty list
all_results = []
for argument in (1,2,3):
result = test_func(argument)
# Collect the result
all_results.append(result)
return all_results
如何在postgresql中执行相同的操作
多谢各位
举个例子,我的test_func(X)接受1个参数,并输出一个包含3列的表。col1的值是X,col2是X+1,col3是X+3。例如:
select * from test_func(1)
select * from (values (1), (2)) x
给予
我的参数列表将是子查询的结果,例如:
select * from test_func(1)
select * from (values (1), (2)) x
我预计会出现以下情况:
|col1|col2|col3|
----------------
| 1 | 2 | 3 |
----------------
| 2 | 3 | 4 |
----------------
您可以将函数加入到输入值中:
select f.*
from (
values (1), (2)
) as x(id)
cross join lateral test_func(x.id) as f;
您可以将函数加入到输入值中:
select f.*
from (
values (1), (2)
) as x(id)
cross join lateral test_func(x.id) as f;
这将为您提供所有结果的结果列表:
SELECT
mt.my_data as input,
tf.*
FROM
(SELECT * FROM my_table) mt, -- input data from a subquery
test_func(my_data) tf -- calling every data set as argument
在小提琴中,test_func()
获取一个整数
并生成行(输入参数=生成的行计数)。此外,它还添加了一个text
列。对于所有输入,所有生成的记录都合并到一个结果集中
这将为您提供所有结果的结果列表:
SELECT
mt.my_data as input,
tf.*
FROM
(SELECT * FROM my_table) mt, -- input data from a subquery
test_func(my_data) tf -- calling every data set as argument
在小提琴中,
test_func()
获取一个整数
并生成行(输入参数=生成的行计数)。此外,它还添加了一个text
列。对于所有输入,所有生成的记录都合并到一个结果集中 你的论点的来源是什么?你到底想要什么?阵列?每个结果一行的表格?谢谢您的快速回复。我的参数源将来自子查询。test_func()将返回多行。例如,每次调用test_func()都会返回10行,如果参数X有2个输入,则会得到20行。我希望这是清楚的。那么test_func返回一个集合?它返回一个表(如果它们是相同的,请原谅)。您的参数的来源是什么?你到底想要什么?阵列?每个结果一行的表格?谢谢您的快速回复。我的参数源将来自子查询。test_func()将返回多行。例如,每次调用test_func()都会返回10行,如果参数X有2个输入,则会得到20行。我希望这是清楚的。所以test_func返回一个集合?它返回一个表(如果它们是相同的,请原谅)。您不需要在那里进行子查询:。。。从my_表中,test_func(my_数据)mf
将正常工作fine@a_horse_with_no_name是的,我只是想演示要创建的子查询点。他写道他正在使用一个子查询。在那里你不需要子查询:。。。从my_表中,test_func(my_数据)mf
将正常工作fine@a_horse_with_no_name是的,我只是想演示要创建的子查询点。他写道他正在使用一个子查询。它会抛出一条“输入端语法错误”的消息。@QuyVuXuan:啊,对不起。修正了输入错误,它会抛出一条“输入结束时出现语法错误”的消息。@QuyVuXuan:啊,对不起。修正了打字错误