Я бы не рекомендовал использовать NOT IN
вместо NOT EXISTS
. NOT IN
отфильтрует ВСЕ строки, если ЛЮБЫЕ значения в подзапросе равны NULL
.
Кроме того, вы должны перечислить вставляемые столбцы.
Итак:
INSERT INTO table_3 (ID, Key_1, Key_2, Key3)
SELECT t1.ID, t1.Key_1, t1.Key_2, t1.Key_3
FROM table_1 t1
WHERE NOT EXISTS (SELECT 1
FROM table_2 t2
WHERE t2.id = t1.id
) AND
(t1.Key_1 IS NOT NULL) OR
(t1.Key_2 IS NOT NULL) OR
(t1.Key_3 IS NOT NULL)