我有一个包含几何线(方式)的表。有一些具有独特几何(不重复)的线和具有相同几何(2,3,4和更多)的线。我想列出唯一的。例如,如果有两条具有相同几何形状的线,我想放下它们。我尝试了DISTINCT,但它也显示了重复行的第一个结果。我只想看到独特的。 我尝试了窗口功能,但我得到了类似的结果(我在复制的第一行得到了一个计数器)。抱歉新手问题,但我正在学习:)谢谢!
示例:
way|
1 |
1 |
2 |
3 |
3 |
4 |
结果应该是:
way|
2 |
4 |
实际上有效。非常感谢。我在这个表中还有其他标签用于每种方式(名称,参考和其他一些标签)当我将它们添加到查询中时,我放松了隔离。
select count(way), way, name
from planet_osm_line
group by way, name
having count(way) = 1;
在查询中没有“name”我会列出所有唯一值,但我想为每一行保留“name”。在这个例子中,我仍然可以获得列表中的所有行。
答案 0 :(得分:4)
阐述@Nithila回答:
select count(way), way
from your_table
group by way
having count(way) = 1;
答案 1 :(得分:2)
你可以通过分组方式,在取出数据时检查count = 1.它会给出非重复数据。
答案 2 :(得分:2)
首先计算所需的行,然后搜索其余字段。所以聚合不会给你带来麻烦。
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
答案 3 :(得分:1)
@voyteck 正如我理解你的问题,你需要只获得非重复记录的方式列,并且每行需要显示名称
如果是这样,您必须将所有列放在select语句中,但不需要按所有列进行分组。 选择计数(方式),方式,名称 来自planet_osm_line 分组 有计数(路)= 1;