Ответ 1
INSERT
INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable rt
WHERE NOT EXISTS
(
SELECT rt.col1, rt.col2, rt.col3
INTERSECT
SELECT col1, col2, col3
FROM myStagingTable
)
Это будет обрабатывать все дубликаты (включая NULL
)
Обратите внимание, что вставка дубликатов из реальной таблицы будет любой. Скажем, содержит ли реальная таблица
1 1 1
1 1 1
а промежуточная таблица содержит
2 2 2
будут вставлены обе записи с 1, 1, 1
.
Если вы хотите удалить дубликаты на вставке (чтобы был вставлен только один экземпляр 1, 1, 1
), просто используйте это:
INSERT
INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable
EXCEPT
SELECT col1, col2, col3
FROM myStagingTable