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

时间:2019-07-11 14:53:49

标签: python sql ms-access odbc pyodbc

我正在编写一个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中删除所有内容并重新运行该脚本时,它运行良好。

1 个答案:

答案 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)