【问题标题】:SQL Query not always inserting missing valuesSQL 查询并不总是插入缺失值
【发布时间】:2019-07-11 14:53:49
【问题描述】:

我正在编写一个 SQL 查询来从另一个表更新一个表。如果在table1 中找不到该记录,我的目标是让我的查询将来自table2 的记录插入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 删除所有内容并重新运行脚本时,它可以完美运行。

【问题讨论】:

    标签: python sql ms-access odbc pyodbc


    【解决方案1】:

    这就是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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 2021-08-03
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2016-12-04
      • 1970-01-01
      相关资源
      最近更新 更多