删除除SQL中的第一条记录之外的重复记录

Yog*_*rma 0 sql t-sql sql-server select duplicates

我想删除除第一个以外的所有重复记录.

喜欢 :

NAME
R
R
rajesh
YOGESH
YOGESH
Run Code Online (Sandbox Code Playgroud)

现在在上面我想删除第二个"R"和第二个"YOGESH".

我只有一列名称为"NAME".

Eli*_*Eli 6

使用CTE(我在生产中有几个).

;WITH duplicateRemoval as (
    SELECT 
        [name]
        ,ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY [name]) ranked
    from #myTable
    ORDER BY name
)
DELETE
FROM duplicateRemoval
WHERE ranked > 1;
Run Code Online (Sandbox Code Playgroud)

说明:CTE将获取所有记录并为每个唯一条目应用行号.每个附加条目将获得递增的数字.将DELETEa 替换为a SELECT *以查看其功能.