从边表删除重复边

时间:2017-12-08 06:49:38

标签: postgresql

我考虑过以下查询,但似乎语法错误。

 delete from table where geom_line in(select distinct(a.geom_line) from table 
 a ,table b where a.source=b.target and b.source=a.target);

我的想法是删除存在边缘的边缘,其中相同的源到目标的目标是源于另一个边缘,该边缘是节点1和2的两个边缘,从1> 2和2-> 1我将删除其中一个。

当只运行子查询时,我会在那里得到明显的边缘" geom_lines"作为2000行,当我运行整个查询时,4000行被删除,这可能是错误的吗?

1 个答案:

答案 0 :(得分:0)

这应该像

一样简单
DELETE FROM "table" a
USING "table" b
WHERE a.source = b.target
  AND a.target = b.source
  AND a.source > a.target;