Как удалить повторяющиеся строки?
Другой возможный способ сделать 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 произвольно, какую строку mssql сохранить в случае ничьей.
Чтобы ms-sql-server сохранить последнюю версию duplicates в порядке RowID
, например, вы ms-sql-server можете использовать ORDER BY RowID DESC
Планы выполнения
План duplicate-removal выполнения для этого часто transact-sql проще и эффективнее, чем deduplication в принятом ответе, поскольку deduplication он не требует самостоятельного duplicates соединения.
Однако это не sql-server всегда так. Одно из мест, где mssql может быть предпочтительнее tsql решение GROUP BY
, - это ситуации, когда deduplication hash aggregate будет предпочтительнее агрегированного deduplication потока.
Решение ROW_NUMBER
всегда дает duplicate-data примерно одинаковый план, тогда duplicate как стратегия GROUP BY
более гибкая.
Факторы, которые duplicate могут способствовать использованию tsql агрегированного хеш-метода:
- Нет полезного индекса по столбцам разделения.
- относительно меньшее количество групп с относительно большим количеством дубликатов в каждой группе
В duplicate-removal крайних вариантах этого второго sql-server случая (если очень мало групп sql-srever с большим количеством дубликатов duplicates в каждой) можно также рассмотреть sql-server возможность простой вставки deduplication строк, которые нужно сохранить tsql в новую таблицу, а затем duplicate TRUNCATE
- вставить оригинал и скопировать duplicate их обратно в свести к минимуму duplication ведение журнала по сравнению tsql с удалением очень большой sql-srever части строк.
sql-server
tsql
duplicates
Как удалить повторяющиеся строки?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.