从 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 in
或not 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 中的查询中减去列表的主要内容,如果未能解决你的问题,请参考以下文章