【问题标题】:Delete/Exclude records from table, if it exists in another table, even if some fields are blank从表中删除/排除记录,如果它存在于另一个表中,即使某些字段是空白的
【发布时间】:2016-02-11 10:13:03
【问题描述】:

我正在尝试创建包含 Table1 中所有记录的表或查询,但删除或排除了 Table2 中也存在的所有记录。

我已尝试创建一个删除查询,该查询创建一个包含排除记录的新表,以及一个显示除排除记录之外的所有记录的选择查询。

我一直在根据 16 个字段比较这两个表。很有可能 Table1 中的两条记录除了一个字段之外是相同的,而且可能并不总是相同的字段。这就是为什么我不能每次都基于一个字段比较两个表。

这一切都很好,只要 16 个字段中的每一个都不为空。某些字段可能为空,但是当我运行查询时,只有我比较的字段都不为空白的记录被删除/排除,任何其他字段仍然保留。我尝试在不比较可能包含空白的字段的情况下运行查询,但由于剩余字段中的信息重复,它排除了更多记录。

如何排除匹配记录,并准确比较空字段?我不介意它是删除还是选择查询,也不介意使用 SQL。同样重要的是 Table1 和 Table2 中的字段没有以任何方式更改。我只能删除Table1中必要的数据,不能更改。

我正在使用 Microsoft Access 2010。

编辑:这是一个示例图像(这些不是我正在使用的确切表格,而是我为这个问题快速创建的示例): IMAGE: Duplicates not deleted accurately

第一个表是Table1,它显示了所有的记录。红色标出的记录具有重复的业务事件 ID,因此必须排除其中一个。对于第一对重复(ID 4),我将排除第二条记录,因为净价和最终价格较低。对于第二对(ID 6),我将删除第二条记录,因为客户撤回了取消并续订。对于第三对(ID 10),我将排除第一条记录,因为 Nett 和 Final Price 较低,Scheme 为空白。

第二个表包含我希望排除的三个记录的精确副本。这些是并且将永远是手动输入的。并不是说 ID 6 和 ID 10 有空白字段。

第三张图显示了我编写的 SQL 代码,如果所有字段都与 Table2 中的所有相应字段匹配,则会删除 Table1 中的一条记录。

最后的图像显示了查询的数据表视图,以及在我运行删除查询时将被删除的记录。只有 ID 为 4 的记录将被删除,因为它是唯一没有空白字段的记录。

【问题讨论】:

  • 您能否准确地展示您在此处尝试执行的操作的小样本?
  • 我已经附上了一张图片,其中包含了一个示例。这些是我在过去一个小时内很快整理好的表格,因此与我正在处理的表格不同。但是过程和问题是完全一样的。

标签: sql database ms-access ms-access-2010


【解决方案1】:

玩了几个小时后,我自己设法找到了解决方案。

IMAGE of SQL Code

我为每个字段添加了一个额外的条件,用于测试每个表中的两个字段是否为空(Null)以及是否相等。完成此操作后,删除查询删除了所有必需的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多