Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:使用子句删除重复的行_Sql_Sql Server - Fatal编程技术网

SQL:使用子句删除重复的行

SQL:使用子句删除重复的行,sql,sql-server,Sql,Sql Server,我有一个世界上所有城市的数据库 如果我运行查询,我可以看到有两个: 我已经使用此查询删除了所有重复的行: WITH CTE AS ( SELECT *,ROW_NUMBER() OVER (PARTITION BY Country, City, AccentCity, Region, Population, latitude, Longitude ORDER BY Country, City, AccentCity, Region, Population, latitude, Longitu

我有一个世界上所有城市的数据库

如果我运行查询,我可以看到有两个:

我已经使用此查询删除了所有重复的行:

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
现在,我将再次运行它并删除纬度和经度相同的所有列,如果两行与上图中的相同,我希望保留人口有一些值的列,并删除人口为“0”的列尝试此查询-

;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
请尝试此查询-

;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

添加where子句。从cte中删除,其中。。。人口<1,…添加where子句。从cte中删除,其中。。。人口<1,…是的,它起作用了,我编辑并选择了“纬度,经度”是的,它起作用了,我编辑并选择了“纬度,经度”