arrays - PostgreSQL:在 WITH 构造中使用列作为数组
问题描述
我正在尝试运行以下查询(我评论了到目前为止我尝试过的一些事情):
WITH
res AS (
SELECT * ...
), -- res has a column of integers called "node". I need to transform this column into an array to use it in viapath below
nodes AS (
-- SELECT ARRAY[node] FROM res
-- SELECT array_agg(node) FROM res
),
viapath AS (
SELECT * FROM pgr_dijkstraVia(
'SELECT id, source, target, cost FROM edge_net',
nodes -- array[54, 37, 897, 435]
)
)
SELECT * FROM viapath;
它使用 array[54, 37, 897, 435] 但不是“节点”。通过我的试验,我收到一个“列“节点”不存在”。如何将“res”中的“node”列用作“viapath”中的数组?
解决方案
您可以使用子查询表达式(select array_agg(node) from res)
.
WITH
res AS (SELECT * ...),
viapath AS
(
SELECT * FROM pgr_dijkstraVia
(
'SELECT id, source, target, cost FROM edge_net',
(select array_agg(node) from res)
)
)
SELECT * FROM viapath;
推荐阅读
- sql - PL PQL 没有正确执行
- python - Python:如何在一个模块中初始化对象并在另一个模块中使用它
- c# - C# XML 序列化 XMLElement 路径
- r - R Shiny:输出名称和for循环问题
- javascript - 我无法在 Javascript 图表上显示我的数据
- reactjs - 如何从两个不同的子级别从 firebase 数据库中获取数据?
- python - Pandas - 连接不同的列级别 MultiIndex DataFrames
- c# - 如何使用带有 post 方法的 pagedlist
- exception - 抛出未经授权的异常以被 UseStatusCodePagesWithReExecute 捕获
- android - ThemedReactContext 无法在 JwPlayer 的 React Native 插件中转换为 Activity