删除SQL Server中的重复记录可以通过以下几种方法来实现:
WITH CTE AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY 列名1, 列名2, ... ORDER BY 列名1, 列名2, ...) AS RowNum
FROM 表名
)
DELETE FROM CTE WHERE RowNum > 1
DELETE FROM 表名
WHERE 主键列 NOT IN (
SELECT 主键列
FROM (
SELECT 主键列, ROW_NUMBER() OVER (PARTITION BY 列名1, 列名2, ... ORDER BY 列名1, 列名2, ...) AS RowNum
FROM 表名
) AS T
WHERE T.RowNum = 1
)
MERGE INTO 表名 AS T
USING (
SELECT 主键列, ROW_NUMBER() OVER (PARTITION BY 列名1, 列名2, ... ORDER BY 列名1, 列名2, ...) AS RowNum
FROM 表名
) AS S
ON T.主键列 = S.主键列
WHEN MATCHED AND S.RowNum > 1 THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT (列名1, 列名2, ...) VALUES (S.列名1, S.列名2, ...)
WHEN NOT MATCHED BY SOURCE THEN DELETE;
其中,“列名1, 列名2, ...”表示需要去重的列名,“主键列”表示表中的主键列名,“表名”表示需要去重的表名。
在实际应用中,可以根据具体情况选择合适的方法进行删除重复记录。
没有搜到相关的文章