【问题标题】:SQL - Finding Duplicates of One Column But Different in Another ColumnSQL - 查找一列的重复项但在另一列中不同
【发布时间】:2015-01-19 15:37:32
【问题描述】:

如何查找在某一列中具有重复值但在另一列中具有不同值的行。我有一个经纬度城市的数据库。我想查找在城市名称列中有重复但纬度和经度不同的所有行。例如,paris,france 和 paris,texas 具有相同的城市名称“paris”,但经纬度不同,因此它们都将包含在查询结果中。但它不应返回具有重复城市名称和重复纬度/经度值的行。

【问题讨论】:

    标签: mysql sql duplicates


    【解决方案1】:

    如果您只想要城市名称:

    select city
    from table t
    group by city
    having min(latitude) <> max(latitude) or
           min(longitude) <> max(longitude);
    

    如果您想了解详细信息,那么您可以join 这个回到主表或使用group_concat() 组合一个国家列表(例如)。

    【讨论】:

      【解决方案2】:
      select city,latitude,longitude,count(*) cnt
      from table
      group by city,latitude,longitude
      having count(*)>1
      

      上述结果集中的城市是重复的。

      【讨论】:

      • 对多个列进行分组将返回在这些给定列中更严格相同的结果。此查询不会返回具有不同 latitudelongitude 值的重复 city
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多