如何删除查询结果中的重复项?

时间:2019-07-12 14:10:58

标签: sql oracle oracle-spatial

我写了一个查询来查找重复的几何。因此,查询返回的对象相等,但每个组只需要一个对象。我想知道是否有任何查询可以这样做?

我尝试了各种分组,汇总,多维数据集等功能。版本:Oracle Database 11g企业版11.2.0.3.0

这是查询示例:

select t1.id, t2.id
  from geom_table t1, geom_table t2
 where sdo_relate(t1.geometry,t2.geometry,'mask=equal') = 'TRUE'
   and t1.id != t2.id

这是查询结果:

enter image description here

在此示例中,我有两组重复的几何:4098967、4098968和 4098964、4098965、4098969。

例如,我只需要4098967和4098964。

2 个答案:

答案 0 :(得分:1)

更改id比较:

select . . .
from geom_table t1 join
     geom_table t2
     on sdo_relate(t1.geometry,t2.geometry,'mask=equal') = 'TRUE' and
        t1.id < t2.id

答案 1 :(得分:0)

您应该尝试以下代码:

select distinct t1.id,t2.id
from geom_table t1,geom_table t2
where sdo_relate(t1.geometry,t2.geometry,'mask=equal')= 'TRUE'
and t1.id != t2.id

更改在与众不同上进行,该操作将删除查询返回的元组中的所有重复项