【问题标题】:How to select records that do not exist in two (or more) tables如何选择两个(或更多)表中不存在的记录
【发布时间】:2014-10-22 23:24:34
【问题描述】:

我有 3 个帐户表,它们都包含相同的字段。表 1 包含所有帐户,而表 2 和表 3 包含帐户的子集。我正在尝试选择 Table1 中不存在于 Table2 或 Table3 中的记录。

假设表格布局是这样的,并且所有 3 个表格都相同: |AcctNum|名称|状态|

如果它只是 Table1 和 Table2,我知道该怎么做,使用左连接和 Is Null,但第三张表让我失望。这可以在一个查询中完成吗?你能结合左连接吗?我应该指出我使用的是 Access 2010。

【问题讨论】:

    标签: sql ms-access-2010


    【解决方案1】:

    是的,您可以组合左连接,并且 Access 使用奇怪的语法,查询应该如下所示:

    SELECT T1.AcctNum
    FROM (Table1 AS T1 LEFT JOIN Table2 AS T2 ON T1.AcctNum = T2.AcctNum) 
    LEFT JOIN Table3 AS T3 ON T1.AcctNum = T3.AcctNum
    WHERE (((T2.AcctNum) Is Null) AND ((T3.AcctNum) Is Null));
    

    【讨论】:

      【解决方案2】:

      您可以使用 Access 创建一个名为 TableCombined 的视图,它是 Table2Table3 的联合。

      此时,您可以使用 left join and Is Null 查询并将 TableCombined 加入到 Table1

      希望这会有所帮助!

      【讨论】:

        【解决方案3】:

        您还可以执行 NOT EXISTS 语句,这在逻辑上对您要达到的目标是有意义的。

        例如:

        SELECT ACCTNUM 
        FROM TABLE1 
        WHERE NOT EXISTS (SELECT TABLE2.ACCTNUM FROM TABLE2 INNER JOIN TABLE3 WHERE TABLE2.ACCTNUM IS NULL AND TABLE3.ACCTNUM IS NULL)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多