在SQL中不存在

时间:2017-03-03 01:00:10

标签: sql not-exists

有人可以帮助我理解我们如何获得查询的以下结果

10

数据是

Select RECIPIENTNAME from donations A
where not exists
                ((SELECT DONORORGANIZATION
                  from donations
                  where RECIPIENTNAME = 'Chambell')
                 MINUS
                (SELECT DONORORGANIZATION
                 from donations B
                 where B.RECIPIENTNAME =A.RECIPIENTNAME ));

根据我的理解,内部子查询不是空的,所以它应该返回FALSE不存在,因此结果中不应该有元组。

我哪里错了?

请帮忙。

1 个答案:

答案 0 :(得分:1)

这是您的查询:

Select RECIPIENTNAME
from donations A
where not exists ((select DONORORGANIZATION
                   from donations
                   where RECIPIENTNAME = 'Chambell'
                  ) MINUS
                  (select DONORORGANIZATION
                   from donations B
                   where B.RECIPIENTNAME = A.RECIPIENTNAME
                  )
                 );

子查询得到所有组织" Chambell"是因为外部收件人不在。如果收件人在" Chambell"的所有组织中,这是空的。显然," Chambell"符合这个条件。和所有组织中的其他人一样,#Chambell"。

请注意,这并不会返回您的确切输出,因为这只会返回一列。