首页
学习
活动
专区
圈层
工具
发布

删除SQL Server中的重复记录?

删除SQL Server中的重复记录可以通过以下几种方法来实现:

  1. 使用CTE(Common Table Expression)和ROW_NUMBER()函数:
代码语言:txt
复制
WITH CTE AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY 列名1, 列名2, ... ORDER BY 列名1, 列名2, ...) AS RowNum
    FROM 表名
)
DELETE FROM CTE WHERE RowNum > 1
  1. 使用子查询和IN子句:
代码语言:txt
复制
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
)
  1. 使用MERGE语句:
代码语言:txt
复制
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, ...”表示需要去重的列名,“主键列”表示表中的主键列名,“表名”表示需要去重的表名。

在实际应用中,可以根据具体情况选择合适的方法进行删除重复记录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

领券