Как удалить повторяющиеся значения, вставленные в столбец идентификаторов в таблице? - PullRequest
3 голосов
/ 23 октября 2010

При некоторых настройках, использующих IDENTITY_INSERT, в столбце идентификаторов есть повторяющаяся запись. Какой метод удаления дубликатов является наилучшим.

У меня есть таблица Details С колонкой DetailID | FKey | Col1 | Col2 | Col3 | Col4

DetailID - это «Identity», а FKey - это внешний ключ с другой таблицей.

Теперь у нас уже есть 240000 записей. Кто-то использовал «IDENTITY_INSERT», который был не для этой таблицы, но по ошибке применил к ней. Так что у него есть запись с дубликатом личности.

Итак, сначала нам нужно выбрать только те строки, которые имеют одинаковую идентичность, после этого нам нужно сопоставить данные всех столбцов, если все они одинаковы, затем сохранить только одну строку и удалить другие, но только идентичность дублируется, тогда нам нужно обновить идентичность значение.

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Вы можете использовать CTE (Common Table Expression) в SQL Server 2005 и выше, чтобы достичь этого - вы в основном «делите» свои данные на ID, поэтому каждая группа идентичных значений является разделом, а затем вы нумеруетете, которые последовательно используют ROW_NUMBER().Любые значения ROW_NUMBER() больше 1 указывают на дубликат.

;WITH Duplicates AS
( 
    SELECT 
      DetailID, FKey, Col1, Col2, Col3, Col4,
      ROW_NUMBER() OVER (PARTITION BY DetailID ORDER BY FKey) AS 'RowNum'
    FROM dbo.YourTable
)
SELECT 
  DetailID, FKey, Col1, Col2, Col3, Col4, RowNum
FROM Duplicates
WHERE RowNum > 1

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

0 голосов
/ 23 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...