我正在尝试将一系列值作为数组插入到可以定义数组的函数中。数组值来自另一个 SQL 函数,它给出了我想在后续函数中使用的值的表,它是 pgr_dijkstra ONE 到 MANY 选项,它需要一个数组。
函数的正常工作方式:
SELECT *
FROM pgr_dijkstra('SELECT id,source,target,cost FROM my_table', start_id, ARRAY(1,2,3,4));
如果我尝试将这个数组插入其中,我粗略地认为该函数应该如何工作,但没有
SELECT foo.*
FROM (SELECT ARRAY(SELECT DISTINCT id::integer
FROM (bla bla) AS ARRAY_QUERY,
pgr_dijkstra('SELECT id, source,target,cost FROM my_table', start_id, ARRAY_QUERY) AS foo;
因为这只会给出:
ERROR: function pgr_dijkstra(unknown, integer, record, boolean) does not exist
并且数组是作为整数而不是记录创建的,所以不确定为什么会这样。
可能是因为我不完全理解数组在 postgresql 中是如何工作的,即使在阅读了有关该主题的文档以及如何将一个查询中的值实现到另一个查询中需要将它们作为数组输入的情况下。希望有一个解决方法,或者只是我在正确实现时错过的一些步骤。
最佳答案
select *
from pgr_dijkstra(
'select id,source,target,cost from my_table',
start_id,
array(select distinct id::integer from (bla bla))
);
关于arrays - PostgreSQL:将动态 ARRAY 插入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858869/