2017-06-03 65 views
0

我有一个包含世界上所有城市的数据库。SQL:使用子句删除重复行

,如果我跑this查询我可以看到有双打:

enter image description here

我已经使用这个查询,删除所有重复行:

WITH CTE AS 
(
SELECT *,ROW_NUMBER() 
OVER (PARTITION BY Country, City, AccentCity, Region, Population, latitude, Longitude 
ORDER BY Country, City, AccentCity, Region, Population, latitude, Longitude) AS RN 
FROM ExperimentWorld 
) 

DELETE FROM CTE WHERE RN<>1 

现在我再次运行并删除latitudeLongitude是相同的所有列,如果两行是相同的像上面的图片我想保留其中​​有一些价值和删除一个与​​'0'

+0

添加where子句。删除从cte哪里...人口<1和.... – scsimon

回答

2

尝试此查询 -

;WITH CTE 
AS (
    SELECT * 
     ,ROW_NUMBER() OVER (
      PARTITION BY Country 
      ,City 
      ,AccentCity 
      ,Region 
      ,Population 
      ,latitude 
      ,Longitude ORDER BY Population DESC 
      ) AS RowNum 
    FROM ExperimentWorld 
    ) 
DELETE 
FROM CTE 
WHERE RowNum > 1 
+0

是的,它的工作,我编辑和选择只是'纬度,经度' –