У меня есть две довольно большие (более 4 миллионов записей) таблицы с одинаковой структурой, и у них около 300 тысяч дублированных строк. Я хотел бы DELETE
дублировать строки, используя синтаксис DELETE IN
.
Я уже сделал это с помощью оператора 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)