Oracle Spatial 查询给出 ORA-01427(单行子查询 Returns 多于一行)
Oracle Spatial query gives ORA-01427 (Single-row Subquery Returns More Than One Row)
我正在地图上创建一个多边形并尝试获取与该多边形最相关的街道。但是,虽然我的查询在多边形覆盖 3-5 条街道时有效,但当它覆盖更大的区域时 returns 会出现上述错误。我试图从我的查询中获得至少一个街道代码结果。我错过了什么?
SELECT ID FROM STREET WHERE CITY_STREET_CODE = (
SELECT
NS.CITY_STREET_CODE CITYSTREETCODE
FROM NEIGHBOURHOOD_STREET NS
INNER JOIN NEIGHBOURHOOD N
ON N.ID = NS.NEIGHBOURHOOD_ID
WHERE SDO_RELATE(N.GEOLOC,
MYGEOLOC,
'MASK=ANYINTERACT') = 'TRUE'
AND NS.CITY_STREET_CODE IN
(SELECT CITY_STREET_CODE
FROM (SELECT CITY_STREET_CODE, DISTANCE
FROM (SELECT
A.CITY_STREET_CODE, SDO_NN_DISTANCE(1) DISTANCE
FROM STREET A
WHERE SDO_NN(A.GEOLOC,
MYGEOLOC,
'SDO_BATCH_SIZE=10 DISTANCE=500 UNIT=M',
1) = 'TRUE'
AND A.CITY_STREET_CODE > 0
ORDER BY DISTANCE)
WHERE ROWNUM <= 1))
)
ps:我尝试降低和增加批量大小,我也尝试用 "sdo_num_res" 代替它;两个都不行,还是我做的不好
您的问题与空间扩展无关。该问题是一个简单的 SQL 问题。你有:
WHERE CITY_STREET_CODE = ( . . . )
但是,子查询可以 return 多行 - 因此会出现错误。
最简单的解决方案是将 =
更改为 IN
:
WHERE CITY_STREET_CODE IN ( . . . )
我正在地图上创建一个多边形并尝试获取与该多边形最相关的街道。但是,虽然我的查询在多边形覆盖 3-5 条街道时有效,但当它覆盖更大的区域时 returns 会出现上述错误。我试图从我的查询中获得至少一个街道代码结果。我错过了什么?
SELECT ID FROM STREET WHERE CITY_STREET_CODE = (
SELECT
NS.CITY_STREET_CODE CITYSTREETCODE
FROM NEIGHBOURHOOD_STREET NS
INNER JOIN NEIGHBOURHOOD N
ON N.ID = NS.NEIGHBOURHOOD_ID
WHERE SDO_RELATE(N.GEOLOC,
MYGEOLOC,
'MASK=ANYINTERACT') = 'TRUE'
AND NS.CITY_STREET_CODE IN
(SELECT CITY_STREET_CODE
FROM (SELECT CITY_STREET_CODE, DISTANCE
FROM (SELECT
A.CITY_STREET_CODE, SDO_NN_DISTANCE(1) DISTANCE
FROM STREET A
WHERE SDO_NN(A.GEOLOC,
MYGEOLOC,
'SDO_BATCH_SIZE=10 DISTANCE=500 UNIT=M',
1) = 'TRUE'
AND A.CITY_STREET_CODE > 0
ORDER BY DISTANCE)
WHERE ROWNUM <= 1))
)
ps:我尝试降低和增加批量大小,我也尝试用 "sdo_num_res" 代替它;两个都不行,还是我做的不好
您的问题与空间扩展无关。该问题是一个简单的 SQL 问题。你有:
WHERE CITY_STREET_CODE = ( . . . )
但是,子查询可以 return 多行 - 因此会出现错误。
最简单的解决方案是将 =
更改为 IN
:
WHERE CITY_STREET_CODE IN ( . . . )