【问题标题】:PostgreSQL: Insert dynamic ARRAY into functionsPostgreSQL:将动态数组插入函数
【发布时间】: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 中的工作原理。希望有一个解决方法,或者只是我在正确实施时错过了一些步骤。

已解决:https://stackoverflow.com/a/42859060/7056396

【问题讨论】:

标签: arrays postgresql postgis dijkstra


【解决方案1】:
select * 
from pgr_dijkstra(
    'select id,source,target,cost from my_table',
    start_id,
    array(select distinct id::integer from (bla bla))
);

【讨论】:

  • 这个解决方案也如我所愿。我现在意识到我尝试实现类似但不正确的东西,所以我忽略了它。感谢您为一个简单的问题提供了一个很好的解决方案。
猜你喜欢
  • 2012-02-27
  • 2014-12-29
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多