如何解决在oracle中将存在与空间查询一起使用会导致错误
我尝试查询彼此相距130公里以内的所有物品。 如果我在where部分使用存在,则会出现异常:
这很好:
select *
from tbl_geometry g1,tbl_geometry g2
where sdo_within_distance(g1.GEOMETRY,g2.GEOMETRY,'distance=130 unit=km')='TRUE'
and g1.id <> g2.id;
在这里我得到一个例外:
select *
from tbl_geometry g1
where exists(
select *
from tbl_geometry g3
where g1.id <> g3.id
and sdo_within_distance(g1.GEOMETRY,g3.GEOMETRY,'distance=130 unit=km') = 'TRUE'
);
错误: [72000] [13226] ORA-13226:没有空间索引时不支持接口ORA-06512:在“ MDSYS.MD”行1723 ORA-06512:在“ MDSYS.MDERR”行8在ORA-06512:在“ MDSYS .SDO_3GL”,第1052行
添加另一个tbl_geometry实例可以“解决”问题:
select *
from tbl_geometry g1
where exists(
select *
from tbl_geometry g2,tbl_geometry g3
where g2.id = g1.id
and g2.id <> g3.id
and sdo_within_distance(g2.GEOMETRY,'distance=130 unit=km') = 'TRUE'
);
任何想法我都可以在没有理由的情况下不使用2 tbl_geometry来使用存在的东西。
谢谢。
解决方法
想看一些魔术吗?
您的查询:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="box">
<a href="https://cdn.pixabay.com/photo/2014/08/21/14/51/pet-423398__180.jpg" class="image">
<img src="https://cdn.pixabay.com/photo/2014/08/21/14/51/pet-423398__180.jpg" alt="image">
</a>
<div class="con-text"> // Magnific popup doesn't work anymore when I add this div
<h2>Title</h2>
</div>
</div>
</div>
我的查询:
SQL> SELECT COUNT(*)
2 FROM tbl_geometry g1
3 WHERE EXISTS
4 (SELECT *
5 FROM tbl_geometry g3
6 WHERE g1.id <> g3.id
7 AND sdo_within_distance (g1.geometry,8 g3.geometry,9 'distance=130 unit=km') = 'TRUE');
SELECT COUNT(*)
*
ERROR at line 1:
ORA-13226: interface not supported without a spatial index
ORA-06512: at "MDSYS.MD",line 1723
ORA-06512: at "MDSYS.MDERR",line 8
ORA-06512: at "MDSYS.SDO_3GL",line 1082
您能发现差异吗?没有?在这里:
SQL> SELECT COUNT(*)
2 FROM tbl_geometry g1
3 WHERE EXISTS
4 (SELECT *
5 FROM tbl_geometry g3
6 WHERE g1.id <> g3.id
7 AND sdo_within_distance (g3.geometry,8 g1.geometry,9 'distance=130 unit=km') = 'TRUE');
COUNT(*)
----------
815
SQL>
vs。
7 AND sdo_within_distance (g1.geometry,--> g1
8 g3.geometry,--> g3
9 'distance=130 unit=km') = 'TRUE');
为什么?我不知道。但这有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。