SQL 仅列出唯一/不同的值

SQL list only unique / distinct values

我有一个 table,其中包含几何线条(方式)。有些线条具有独特的几何形状(不重复),有些线条具有相同的几何形状(2、3、4 和更多)。我只想列出独特的。例如,如果有 2 条具有相同几何形状的线,我想删除它们。我试过 DISTINCT 但它也显示了重复行的第一个结果。我只想看到独特的。 我尝试了 window 函数,但得到了类似的结果(我在第一行从复制的结果中得到了一个计数器)。很抱歉提出新手问题,但我正在学习 :) 谢谢!

示例:

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

结果应该是:

way|
2  |
4  |

确实有效。非常感谢。我在这个 table 中还有其他标签用于各种方式(名称、参考和其他一些标签)当我将它们添加到查询中时,我松开了隔离。

select count(way), way, name 
from planet_osm_line 
group by way, name 
having count(way) = 1;

在查询中没有 "name" 时,我会列出所有唯一值,但我想为每一行保留 "name"。通过这个例子,我仍然得到 table 中列出的所有行。

您可以按方式分组,在取出数据时检查计数=1.It 将给出非重复数据。

阐述@Nithila 的回答:

select count(way), way
from your_table
group by way
having count(way) = 1;

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

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

@voyteck 据我了解您的问题,您只需要获取 way 列的非重复记录,并且对于每一行,您需要显示名称

如果是这样,您必须将所有列放在 select 语句中,但不需要按所有列进行分组。 select 计数(方式),方式,名称 来自 planet_osm_line 按方式分组 有 count(way) = 1;