【问题标题】:QGis SQL Query - "Deleting almost duplicates entries"QGis SQL 查询 - “删除几乎重复的条目”
【发布时间】:2018-10-29 20:18:51
【问题描述】:

我有一张桌子,在另一张桌子的所有点之间有一个距离矩阵。在距离矩阵上,我只是保持距离小于 100m 的直线。 我称距离彼此不到 100 m 的点重复条目。但是在距离矩阵上,每个重复项需要 2 行 距离矩阵如下所示:

InputID TargetID Distance

   1       2       75

   1       3       35

   2       1       75

   3       1       35

我只想保留其中一个重复条目,这意味着在上一个示例中,我只想保留 1 的 ligne,因为 2 和 3 距离1. 但是如果我只保留距离矩阵上的1,我也需要只保留原始表上的1。

我使用 QGis 的 SQL Query 工具,但我真的不知道如何编程。谁能帮帮我?

谢谢!

【问题讨论】:

    标签: sql qgis


    【解决方案1】:

    您可以在连接中使用一些子查询来检索要删除的值

    delete from my_table  m2
    inner join (
      select m.distance, min(m.InputId) min_id
      from my_table  m.
      inner join (
        select distance, count(*)
        from my_table 
        group by Distance 
        having count(*) > 1 
      ) t on t.distance  = m.distance
      group by distance 
    ) t2 on t2.distance = m2.distance and t2.min_id  = m2.InputId
    

    【讨论】:

    • 在这段代码中,my_table 是距离矩阵的表吗? m.InputID 是 my_table 的属性 InputID 吗?但是我计算距离矩阵的原始表格在哪里?
    • 我假设您的结果是一个表格。我将其命名为 my_table(矩阵与表格非常相似)。否则 .. 显示正确的数据样本,其中包含表和列名称以及一致的值 .. .. .我无法想象您是如何存储数据的 ..
    • 这是我的原始表:[Originale table][2] [2]: i.stack.imgur.com/igCWy.png 在这个表中,行的 ID 是“Ref”,这是我的矩阵表。在这张表中,我只保留了“Nom_latin”=“Nom_latin2”和“距离”i.stack.imgur.com/qLXh3.png
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2016-08-30
    • 2015-08-12
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多