Как удалить повторяющиеся строки?
Другой возможный способ сделать tsql это
;
--Ensure that any immediately preceding statement is terminated with a semicolon above
WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3
ORDER BY ( SELECT 0)) RN
FROM #MyTable)
DELETE FROM cte
WHERE RN > 1;
Я использую ORDER BY (SELECT 0)
выше, поскольку duplicate-data произвольно, какую строку sql-srever сохранить в случае ничьей.
Чтобы duplicate-data сохранить последнюю версию duplicate-removal в порядке RowID
, например, вы tsql можете использовать ORDER BY RowID DESC
Планы выполнения
План duplicate выполнения для этого часто duplicates проще и эффективнее, чем sql-srever в принятом ответе, поскольку mssql он не требует самостоятельного duplication соединения.
Однако это не duplicate-data всегда так. Одно из мест, где duplicate может быть предпочтительнее duplicates решение GROUP BY
, - это ситуации, когда duplicate hash aggregate будет предпочтительнее агрегированного duplicate-removal потока.
Решение ROW_NUMBER
всегда дает deduplication примерно одинаковый план, тогда sql-srever как стратегия GROUP BY
более гибкая.
Факторы, которые no-duplicates могут способствовать использованию mssql агрегированного хеш-метода:
- Нет полезного индекса по столбцам разделения.
- относительно меньшее количество групп с относительно большим количеством дубликатов в каждой группе
В duplicate-data крайних вариантах этого второго duplication случая (если очень мало групп duplicate-removal с большим количеством дубликатов transact-sql в каждой) можно также рассмотреть duplication возможность простой вставки duplication строк, которые нужно сохранить transact-sql в новую таблицу, а затем transact-sql TRUNCATE
- вставить оригинал и скопировать duplicate-data их обратно в свести к минимуму duplicate-removal ведение журнала по сравнению duplication с удалением очень большой no-duplicates части строк.
sql-server
tsql
duplicates
Как удалить повторяющиеся строки?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.