2012-02-03 18 views
-1

У меня есть повторяющиеся строки в нескольких таблицах SQL Server, но идентификаторы разные. Есть ли запрос, который я могу запустить, чтобы удалить эти строки?Как удалить повторяющиеся строки из SQL Server?

+3

Во-первых, как вы можете сказать, что они дубликаты? – Ray

+1

Во-вторых, ознакомьтесь с этим http://support.microsoft.com/kb/139444 – Ray

+0

Опубликуйте некоторые примеры данных для нас. Это может помочь. – rcdmk

ответ

0

Вот полный пример:

create table #test (
id int, 
value int 
) 

insert into #test values (1,2), (2,2), (3,1), (4,2) 


delete #test 
where id not in (select min(id) from #test group by value) 

drop table #test 

Это удалит все ids, которые имеют один и тот же value, кроме min(id).

Вам просто нужно изменить столбцы group by, чтобы рассмотреть все, что необходимо для дублирования строки.

2

Поскольку ваш ответ не является конкретным, я могу дать вам общий ответ.

Вы можете использовать функцию ROW_NUMBER из SQL Server. Пример:

WITH CTE (COl1,Col2, DuplicateCount) 
AS 
(
SELECT COl1,Col2, 
ROW_NUMBER() OVER(PARTITION BY COl1,Col2 ORDER BY Col1) AS DuplicateCount 
FROM DuplicateRcordTable 
) 
DELETE 
FROM CTE 
WHERE DuplicateCount > 1 
GO 

Проверить это link за дополнительной информацией.

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