Postgresql '';用作表达式的子查询返回多行'';postgres错误
我正在尝试实现一个postgres请求:Postgresql '';用作表达式的子查询返回多行'';postgres错误,postgresql,request,geometry,postgis,Postgresql,Request,Geometry,Postgis,我正在尝试实现一个postgres请求: select distinct nom_reg_12 from region_15,repartition where st_intersects(region_15.geom, (select geom from repartition where id_espece='Tetrarti'))=true; 但我得到了以下错误
select distinct nom_reg_12
from region_15,repartition
where st_intersects(region_15.geom,
(select geom
from repartition
where id_espece='Tetrarti'))=true;
但我得到了以下错误:
由用作表达式的子查询返回的多行
在我第一次尝试时,它工作得很好:
select distinct nom_reg_12
from region_15,repartition
where st_intersects(region_15.geom,repartition.geom)=true;
然后我试着用这个零件来得到我想要的几何图形:
select geom from repartition where id_espece='Tetrarti'
论GIS的堆栈交换
您可以将条件移动到子查询之外。ST_Intersects一次处理一行(对于每个几何体),因此如果使用子查询,它也必须只返回一行,并且可能有多个“Tetrarti”行
select distinct nom_reg_12
from region_15,repartition
where id_espece='Tetrarti'
and st_intersects(region_15.geom,
repartition.geom)=true;
首先,您不具备在SQL中加入region15和重新分区的条件。您只需使用子查询添加逻辑条件。它几乎是纯笛卡尔的。您的条件类似于将与任何重新分区相交的所有区域_15与所有重新分区;) 记住为这两列创建空间索引
create index on region_15 using gist(geom);
create index on repartition using gist(geom);
根据消息,指定条件下有多行。试着去完善它。。。
create index on region_15 using gist(geom);
create index on repartition using gist(geom);