2015-04-01 57 views
3

我遇到了一些棘手的问题。我需要根据几何图形选择SQL空间表中的所有重复项(有些已经复制并粘贴,意识到它们一遍又一遍地粘贴相同的几何图形)。根据几何列选择重复项

我需要选择除几何相同的最低ID以外的所有重复项。

回答

-1

这给你所有重复。

WITH C AS(
    SELECT ROW_NUMBER() OVER (PARTITION BY CAST(your_geometry_field AS VARBINARY(MAX)) 
           ORDER BY CAST(your_geometry_field AS VARBINARY(MAX)) AS Rn 
    FROM your_table 
) 
SELECT * FROM C WHERE Rn != 1 
+0

如果提供表定义和样本数据的问题,我将更新detailes – sqluser 2015-04-01 04:41:44

+0

伟大的答案,我将给出以前..我将在明天发送样本:D – 2015-04-01 06:07:43

+0

由于几何在SQL Server中没有可比性,因此无法工作。 – andyb 2016-03-02 15:21:07

0

对于你的问题的第一部分:在一个名为“表名”与名为“CenterPoint的” 以下组的中心点按位置,空间点列的表,如果计数大于1,则有重复:

SELECT ID, COUNT(CenterPoint) 
    FROM TableName 
    GROUP BY CenterPoint 
    HAVING COUNT(CenterPoint) > 1 
+0

您无法按几何列进行分组,因为它在SQL Server中不具有可比性。 – digz6666 2017-03-27 03:24:22

1

你可以加入你自己的表格并用STEQUals函数检查。

SELECT tbl1.OBJECTID, tbl2.OBJECTID 
FROM your_table tbl1 
JOIN yout_table tbl2 ON tbl1.your_geometry_field.STEquals(tbl2.your_geometry_field) = 1 
ORDER BY tbl1.OBJECTID 

一个缺点是,你得到重复的对像如下:

101 110 
101 210 
110 101 
110 210 
210 101 
210 110 
相关问题