从 Access 中的查询中减去列表

Posted

技术标签:

【中文标题】从 Access 中的查询中减去列表【英文标题】:Subtracting Lists from Queries in Access 【发布时间】:2016-10-27 13:31:44 【问题描述】:

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

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          

我从苏切查询中提取了两个查询。第一个查询称为 DUN,它从苏切查询中提取以下内容

A         B           C           D            E
1         a           b                        d

第二个查询称为 HOL,它从苏切查询中提取以下内容。

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

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

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

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

【问题讨论】:

【参考方案1】:

一种方法使用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);

【讨论】:

我的错!知道了!谢谢【参考方案2】:

如果我理解了,您可以像这样使用 MINUS 运算符:

创建表鳍作为 (从这样的选择 * 减 选择 * 从邓恩 减 选择 * 从 hol);

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

【讨论】:

SQL 是通用选项卡,要求的具体版本是 MS Access。 MS Access 不支持 MINUS 运算符。请参阅此处:***.com/questions/11282433/minus-query-in-msaccess 和此处:***.com/questions/337158/…。另一种方法是按照 Gordon Linoff 的建议使用 NOT IN 或 NOT EXISTS。

以上是关于从 Access 中的查询中减去列表的主要内容,如果未能解决你的问题,请参考以下文章

修改 MS Access 列表框中的项目列表

如何从第三个查询中排除值(访问)

Access 2013 中的联接查询

表格/查询中不存在MS Access Combobox的值

在 Access 中扫描项目时减去数据库中的数量的 VB 代码

ACCESS VBA 从列表框中选择多个值并执行查询名称