错误:用作表达式的子查询返回的多行

时间:2017-09-04 22:29:43

标签: sql postgis postgresql-9.4 pgrouting

我正在从一本实用指南的书中做一个例子,但是我自己的表已经遇到了这个错误。我已经使用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
    );

1 个答案:

答案 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返回多行,则会出现该错误。