子查询返回超过 1 个值 - STIntersects

Subquery returned more than 1 value - STIntersects

我有三个table

两者在同一个坐标系中
点 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 分配一个值,而您的子查询返回多个值。