问题描述
我有两个带有空间索引的表: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 (将#修改为@)