【发布时间】:2017-03-17 22:01:15
【问题描述】:
我正在尝试将一系列值作为数组插入到可以定义数组的函数中。数组值来自另一个 SQL 函数,该函数给出了我想在后续函数中使用的值的表,这是 pgr_dijkstra ONE to 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 中的工作原理。希望有一个解决方法,或者只是我在正确实施时错过了一些步骤。
【问题讨论】:
-
另外,如果您创建一个 cte,而不是使用子查询会更好,我几乎可以肯定 sintaxis 不是您需要的。
-
我不熟悉“cte”和“sintaxis”术语。但是stackoverflow.com/a/42859060/7056396 提到的先前解决方案也可以按我的预期工作。
标签: arrays postgresql postgis dijkstra