SQL 查询并不总是插入缺失值

SQL Query not always inserting missing values

我正在编写一个 SQL 查询来从另一个 table 更新一个 table。如果在 table1.

中找不到该记录,我的查询目标是将 table2 中的记录插入到 table1

table1 完全为空时,查询效果很好,但是当我删除几条记录并尝试 运行ning 我的查询时,它无法重新插入已删除的值,即使它们仍然存在在 table2.

这是我的 python 代码和 SQL 查询

    cursor.execute('INSERT INTO table1 (col1, col2, col3, col4)  SELECT col1, col2, col3, col4 FROM table2 WHERE NOT EXISTS (SELECT col1, col2, col3, col4 FROM table1)')

当我从 table1 中删除 Access 中的一条记录并尝试重新 运行 脚本时它什么也没做,但是当我从 table1 中删除所有内容并重新 运行 脚本完美运行。

这就是 NOT EXISTS 的工作方式,假设 col1 是表中的主键

INSERT INTO table1 (col1, col2, col3, col4)  
SELECT col1, col2, col3, col4 
FROM table2  t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t1.col1 = t2.col1)