使用 sdo_nn、sdo_nn_distance 时遇到问题

问题描述

我有两个带有空间索引的表:Table_1 和 Table_2,我需要从 Table_2 中获取最接近的第一个元素 Id 来更新 Table_1 中名为 Id 的字段,并且我建立了 20 个单位的距离限制 这是sql语句:

UPDATE TABLE_1 h
SET H.Id =(SELECT x.Id
                  FROM (SELECT /*+ INDEX(b POLEPED_SIDX) */ b.Id--,SDO_NN_disTANCE(1) disT
                        FROM Table_2 b,Table_1 h
                        WHERE h.Id IS NULL 
                        AND (b.name = 'Name_1' or b.name='Name_2')
                        AND SDO_NN(b.geometry,h.geometry,'sdo_batch_size=10 disTANCE=20',1) = 'TRUE'
                        ORDER BY SDO_NN_disTANCE(1))x
                  WHERE ROWNUM = 1
                 )
WHERE exists
(SELECT 1
FROM Table_2 b
WHERE h.Id IS NULL 
AND (b.name = 'Name_1' or b.name='Name_2')
AND SDO_NN(b.geometry,1) = 'TRUE');

通过这个sql语句,我在表中得到了这个更新::

  Number      T       No         Id
15001479      C       1       15001693

15001478      R       1       15001693

15001477      R       8       15001693

15001476      R       3       15001693

15001475      R       7       15001693

在这种情况下,我必须在每个数字中获得不同的 ID,如下所示:

15001477      R       8       15001213

15001476      R       3       15001691

15001475      R       7       15001583

看不到问题,哪里出错了? 谢谢大家!!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)