我有一个包含几何线条(ways)的表格,有具有唯一几何线条(不重复)和具有相同几何线条(2、3、4和更多)的线条。我只想列出唯一的。例如,如果有两行具有相同的几何图形,则我要删除它们。我尝试了DISTINCT,但它也显示了重复行的第一个结果。我只想看那些独一无二的。
我试过窗口功能,但得到了类似的结果(我从复制的窗口中得到了第一行的计数器)。很抱歉有个新问题,但我正在学习:)谢谢!
例子:

way|
1  |
1  |
2  |
3  |
3  |
4  |

结果应该是:
way|
2  |
4  |

真的很管用。谢谢。当我将其他标记添加到查询中时,我还以各种方式在这个表中添加了其他标记(name、ref和少数其他标记),从而消除了隔离。
select count(way), way, name
from planet_osm_line
group by way, name
having count(way) = 1;

如果查询中没有“name”,我将获得列出的所有唯一值,但我想为每一行保留“name”。在这个例子中,我仍然得到表中列出的所有行。

最佳答案

首先计算所需的行,然后搜索其余字段。所以聚合不会给你带来问题。

WITH singleRow as (
   select count(way), way
   from planet_osm_line
   group by way
   having count(way) = 1
)
SELECT P.*
FROM planet_osm_line P
JOIN singleRow S
  ON P.way = S.way

10-07 12:03