【问题标题】:Moving duplicate record to another table before deleting在删除之前将重复记录移动到另一个表
【发布时间】:2016-05-27 13:48:33
【问题描述】:

我发现了这个很棒的代码,它可以删除 SQL Server 表中的重复行。

;WITH x AS 
(
  SELECT col1, col2, col3, rn = ROW_NUMBER() OVER 
      (PARTITION BY col1, col2, col3 ORDER BY id)
  FROM dbo.tbl
)
DELETE x WHERE rn > 1;

现在我想在删除之前将重复记录移动到另一个表。任何帮助将非常感激。谢谢。

【问题讨论】:

  • 只需将delete 更改为select * into [table] from xinsert into [table] select * from x(显然包括您已经拥有的where)。

标签: sql-server duplicates insert-into


【解决方案1】:

您可以简单地复制粘贴 CTE 并使用它两次:

;WITH x AS 
(
  SELECT col1, col2, col3, rn = ROW_NUMBER() OVER 
      (PARTITION BY col1, col2, col3 ORDER BY id)
  FROM dbo.TableName1
)
INSERT INTO dbo.TableName2
    SELECT columns FROM x WHERE rn > 1;

;WITH x AS 
(
  SELECT col1, col2, col3, rn = ROW_NUMBER() OVER 
      (PARTITION BY col1, col2, col3 ORDER BY id)
  FROM dbo.TableName1
)
DELETE FROM x WHERE rn > 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多