我正在编写一个SQL查询以从另一个表更新一个表。我的目标是查询table2
中未找到的记录,将这些记录从table1
插入table1
。
当table1
完全为空时,该查询工作良好,但是当我删除几个记录并尝试运行查询时,即使它们仍然位于table2
中,它也无法重新插入已删除的值。
这是我的带有SQL查询的python代码
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
中删除所有内容并重新运行该脚本时,它运行良好。
答案 0 :(得分:2)
假设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)