次の構文でテーブルに挿入しようとしています:
INSERT INTO table1(
col1, col2, col3)
SELECT distinct
col1, col2, getDate()
FROM table2 WHERE NOT EXISTS(
SELECT 1 FROM table1, table2
WHERE ((table1.col1 = table2.col1) or (table1.col1 is null and table2.col1 is null))
AND ((table1.col2 = table2.col2) or (table1.col2 is null and table2.col2 is null)))
しかし、クエリを実行すると、(0 行が影響を受けました) と表示されます。
NOT EXISTS ステートメント内の SELECT ステートメントは、挿入したくない正しい行数を返します。WHERE NOT EXISTS ステートメントを使用せずにテーブルに挿入しようとすると、すべてが挿入されます。table1 にまだない行のみを挿入したい。