Вы действительно хотите оператор SQL-2003 MERGE. Я включил BNF для оператора MERGE (раздел 14.9, p837) из стандарта (гротеск, но для вас это стандарт SQL) ниже. При переводе это может привести к:
MERGE INTO TableA
USING TableB ON TableA.Col1 = TableB.Col1
WHEN NOT MATCHED INSERT (Col1, Col2, Col3)
VALUES(TableB.Col1, TableB.Col2, NOW());
Я не запускал эту СУБД SQL, которая знает об операторе MERGE - это означает, что в нем, вероятно, есть ошибки. Обратите внимание, что в стандарте есть предложение WHEN MATCHED, которое может принимать UPDATE; IBM DB2 также поддерживает предложение DELETE, которого нет в стандарте 2003 года (не уверен в стандарте 2008 года).
14,9 <merge statement>
(p837)
Условно обновить строки таблицы или вставить новые строки в таблицу, или и то, и другое.
<merge statement> ::=
MERGE INTO <target table> [ [ AS ] <merge correlation name> ]
USING <table reference> ON <search condition>
<merge operation specification>
<merge correlation name> ::=
<correlation name>
<merge operation specification> ::=
<merge when clause> ...
<merge when clause> ::=
<merge when matched clause> |
<merge when not matched clause>
<merge when matched clause> ::=
WHEN MATCHED THEN <merge update specification>
<merge when not matched clause> ::=
WHEN NOT MATCHED THEN <merge insert specification>
<merge update specification> ::= UPDATE SET <set clause list>
<merge insert specification> ::=
INSERT [ <left paren> <insert column list> <right paren> ]
[ <override clause> ] VALUES <merge insert value list>
<merge insert value list> ::=
<left paren> <merge insert value element>
[ { <comma> <merge insert value element> }... ] <right paren>
<merge insert value element> ::=
<value expression> |
<contextually typed value specification>