如何选择两个(或更多)表中不存在的记录

时间:2014-10-22 23:24:34

标签: sql ms-access-2010

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

让我们说表格布局是这样的,并且对于所有3个表格都是相同的: | ACCTNUM |名称|国家|

我知道如果只是Table1和Table2,使用左连接和Is Null,如何做到这一点,但是第3个表正在抛弃我。这可以在一个查询中执行吗?你能结合左连接吗?我应该指出我正在使用Access 2010。

3 个答案:

答案 0 :(得分: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));

答案 1 :(得分:0)

您可以使用Access创建名为 TableCombined 的视图,该视图是 Table2 Table3 的并集。

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

希望这有帮助!

答案 2 :(得分:0)

您还可以执行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)