Каков наилучший способ удаления дубликатов из таблицы данных? - PullRequest
7 голосов
/ 04 декабря 2008

Я проверил весь сайт и погуглил в сети, но не смог найти простого решения этой проблемы.

У меня есть таблица данных, которая имеет около 20 столбцов и 10K строк. Мне нужно удалить повторяющиеся строки в этой таблице данных на основе 4 ключевых столбцов. Разве .Net не имеет функцию, которая делает это? Функция, ближайшая к тому, что я ищу, была datatable.DefaultView.ToTable (true, массив отображаемых столбцов), но эта функция различает всех столбцов.

Было бы здорово, если бы кто-то мог помочь мне с этим.

РЕДАКТИРОВАТЬ: Я прошу прощения за то, что не ясно об этом. Эта таблица данных создается путем чтения файла CSV, а не из БД. Так что использование SQL-запроса не вариант.

Ответы [ 12 ]

0 голосов
/ 04 декабря 2008

Ответ Liggett78 намного лучше - особенно как у меня была ошибка! Исправление следующим образом ...

DELETE TableWithDuplicates
    FROM TableWithDuplicates
        LEFT OUTER JOIN (
            SELECT PK_ID = Min(PK_ID), --Decide your method for deciding which rows to keep
                KeyColumn1,
                KeyColumn2,
                KeyColumn3,
                KeyColumn4
                FROM TableWithDuplicates
                GROUP BY KeyColumn1,
                    KeyColumn2,
                    KeyColumn3,
                    KeyColumn4
            ) AS RowsToKeep
            ON TableWithDuplicates.PK_ID = RowsToKeep.PK_ID
    WHERE RowsToKeep.PK_ID IS NULL
0 голосов
/ 04 декабря 2008

Используйте запрос вместо функций:

DELETE FROM table1 AS tb1 INNER JOIN 
(SELECT id, COUNT(id) AS cntr FROM table1 GROUP BY id) AS tb2
ON tb1.id = tb2.id WHERE tb2.cntr > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...