子查询返回超过 1 个值 - STIntersects
Subquery returned more than 1 value - STIntersects
我有三个table
- 2x tables 具有点几何列的观测点数据(针对不同时间段)
- 整个研究区域的 table 个 hexbin,带有一个多边形 geom 列
两者在同一个坐标系中
点 table 总是与 hexbin table 相交。即 hexbin 层外没有点。
运行 以下查询:
UPDATE OBS_MONDAY
SET GRID_ID = (
SELECT GRID_ID
FROM SYDHEX s with (index(FDO_Shape))
WHERE (OBS_MONDAY.Shape.STIntersects(s.Shape) = 1))
这执行得很好,并将Hexbin图层中的GRID ID字段计算到Point图层中的列中。
但是,运行 针对第二个点 table 的相同查询会导致错误:
子查询返回了 1 个以上的值。当子查询跟在 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
谁能帮我查明这里的问题。
你必须决定要做什么。 "work-around"是使用SELECT TOP (1)
或者聚合:
UPDATE OBS_MONDAY
SET GRID_ID = (SELECT TOP (1) GRID_ID
FROM SYDHEX s with (index(FDO_Shape))
WHERE OBS_MONDAY.Shape.STIntersects(s.Shape) = 1
);
顺便说一句,这与空间数据无关。您正在尝试为 GRID_ID
分配一个值,而您的子查询返回多个值。
我有三个table
- 2x tables 具有点几何列的观测点数据(针对不同时间段)
- 整个研究区域的 table 个 hexbin,带有一个多边形 geom 列
两者在同一个坐标系中
点 table 总是与 hexbin table 相交。即 hexbin 层外没有点。
运行 以下查询:
UPDATE OBS_MONDAY
SET GRID_ID = (
SELECT GRID_ID
FROM SYDHEX s with (index(FDO_Shape))
WHERE (OBS_MONDAY.Shape.STIntersects(s.Shape) = 1))
这执行得很好,并将Hexbin图层中的GRID ID字段计算到Point图层中的列中。
但是,运行 针对第二个点 table 的相同查询会导致错误:
子查询返回了 1 个以上的值。当子查询跟在 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
谁能帮我查明这里的问题。
你必须决定要做什么。 "work-around"是使用SELECT TOP (1)
或者聚合:
UPDATE OBS_MONDAY
SET GRID_ID = (SELECT TOP (1) GRID_ID
FROM SYDHEX s with (index(FDO_Shape))
WHERE OBS_MONDAY.Shape.STIntersects(s.Shape) = 1
);
顺便说一句,这与空间数据无关。您正在尝试为 GRID_ID
分配一个值,而您的子查询返回多个值。