从Access中的查询中减去列表

时间:2016-10-27 13:31:44

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

我在名为Suche的主查询中有五个字段。让我们考虑字段的名称,以便轻松演示为A,B,C,D,E。 Suche Query看起来像这样

A         B           C           D            E
1         a           b                        d
2         m           n           o            
3         t           z   
4         r           m           d            b
5         q           f           j          

我从Suche Query中提取了两个查询。第一个查询称为DUN,它从Suche Query

中提取以下内容
A         B           C           D            E
1         a           b                        d

并且第二个Query被称为HOL,它从Suche Query中提取以下内容。

A         B           C           D            E
3         t           z   
4         r           m           d            b

现在我正在寻找构建第三个查询,我想从Suche查询中找到剩余的未提取记录。我试图实现这样的事情

SELECT (Suche.A-DUN.A-HOL.A) AS FINAL FROM Suche,DUN,HOL;

但它似乎不起作用。有人可以指导我如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

一种方法使用not innot exists。假设列A是唯一的,您可以这样做:

select s.*
from (<Suche>) as s
where s.A not in (select d.a from (<DUN>) as d) and
      s.A not in (select h2.a from (<HOL>) as h2);

答案 1 :(得分:0)

如果我理解了,你可以像这样使用MINUS算子:

CREATE TABLE fin AS   (SELECT * FROM suche 减去   SELECT * FROM dun 减去   SELECT * FROM hol);

如果您不需要创建表,则忽略CREATE TABLE并直接使用子查询。