2016-02-16 4 views
2

Я нашел этот отличный код, который удаляет повторяющиеся строки в таблице 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; 

Теперь я хочу переместить дубликаты записей в другой таблице перед удалением. Любая помощь могла бы быть полезна. Благодарю.

+0

Просто измените '' delete' для выбора * в [таблицу] из x' или 'вставить в [таблица] выберите * из x' (очевидно, включая 'where' у вас уже есть). – HoneyBadger

ответ

2

Вы можете просто скопировать и вставить КТР и использовать его дважды:

;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; 
+0

Отлично! Благодаря :) – Shanka

Смежные вопросы