Sql условная вставка, если строка еще не существует

Я создаю sproc, который будет вставлять строки в таблицу "staging" со вставкой в ​​+ подзапрос, например:

INSERT INTO myStagingTable
SELECT col1, col2, col3
FROM myRealTable

Мне нужно как-то поставить условное условие, чтобы определить, существует ли значение из col1, например, уже на myStagingTable, тогда не вставляйте его, просто пропустите эту строку из myRealTable.

Это возможно? Если да, как бы я это структурировал?

ТИА

Ответы

Ответ 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