我正在从一本实用指南的书中做一个例子,但是我自己的表已经遇到了这个错误。我已经使用LIMIT 1来避免这个错误,就像书中的例子那样,但是必须有另一个错误。关于修复的任何想法?
错误:
用作表达式
的子查询返回的多行
SELECT *
FROM pgr_drivingDistance(
'SELECT id, source, target,
cost
FROM network.roads',
(SELECT v.id
FROM network.master_table AS h
,LATERAL (SELECT id FROM network.roads_vertices_pgr AS n
ORDER BY h.geom <-> n.the_geom LIMIT 1 ) AS v),
5000, false, false
);
答案 0 :(得分:1)
限制1已开启
SELECT id FROM network.roads_vertices_pgr AS n
ORDER BY h.geom <-> n.the_geom LIMIT 1
错误发生在整个子查询中,
(SELECT v.id
FROM network.master_table AS h
,LATERAL (SELECT id FROM network.roads_vertices_pgr AS n
ORDER BY h.geom <-> n.the_geom LIMIT 1 ) AS v)
CROSS JOIN LATERAL
上的network.master_table
以及该子查询的结果(您知道它是一行)。因此,如果network.master_table上的SELECT返回多行,则会出现该错误。