我在名为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;
但它似乎不起作用。有人可以指导我如何实现这个目标吗?
答案 0 :(得分:2)
一种方法使用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);
答案 1 :(得分:0)
如果我理解了,你可以像这样使用MINUS算子:
CREATE TABLE fin AS (SELECT * FROM suche 减去 SELECT * FROM dun 减去 SELECT * FROM hol);
如果您不需要创建表,则忽略CREATE TABLE并直接使用子查询。