У меня есть две довольно большие (4+ миллиона записей) таблицы с одинаковой структурой, и в них около 300 тысяч дублирующихся строк. Я хочу УДАЛИТЬ
повторяющиеся строки, используя синтаксис УДАЛИТЬ В
.
Я уже делал это с помощью оператора MERGE
(доступно только в 2008 или новее, поэтому я не могу его использовать, так как у меня все еще работает 2005), и оператор DELETE EXISTS
, но у меня возникли проблемы с запуском DELETE IN
.
Проблема с DELETE IN
заключается в том, что моя большая таблица имеет составной первичный ключ, а это означает, что я могу идентифицировать уникальные строки, только используя все эти столбцы вместе.
Возможно ли в T-SQL использовать несколько выражений в качестве параметров предложения IN
? Что-то вроде:
DELETE FROM MyBigTable
WHERE ([Column1], [Column2], [Column3]) IN
(SELECT [Column1],
[Column2],
[Column3]
FROM MyBigTable
INTERSECT
SELECT [Column1],
[Column2],
[Column3]
FROM MyOtherBigTable)