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