Sql 从另一个表中获取缺少的数据

Sql 从另一个表中获取缺少的数据,sql,oracle,Sql,Oracle,我有两张桌子“入场”和“电子邮件地址”。在录取过程中,如果有人注册了“无纸通信”,系统应将其电子邮件添加到EmailAddress表中。由于一些编码错误,一些注册了“无纸通信”的录取者在emailAddress表中缺少电子邮件地址。我如何才能找到所有已签署无纸通信但在电子邮件地址中丢失记录的记录。。。P.S.电子邮件地址表中也有一些其他流程的电子邮件地址,我只对一个在无纸标志设置为“Y”的录取流程中缺失的邮件地址感兴趣 两个表都有personid列 一种方法是不存在: select * from

我有两张桌子“入场”和“电子邮件地址”。在录取过程中,如果有人注册了“无纸通信”,系统应将其电子邮件添加到EmailAddress表中。由于一些编码错误,一些注册了“无纸通信”的录取者在emailAddress表中缺少电子邮件地址。我如何才能找到所有已签署无纸通信但在电子邮件地址中丢失记录的记录。。。P.S.电子邮件地址表中也有一些其他流程的电子邮件地址,我只对一个在无纸标志设置为“Y”的录取流程中缺失的邮件地址感兴趣


两个表都有personid列

一种方法是
不存在

select *
from Admission a
where a.paperlessCommunication = 'Y' and
      not exists (select 1 from EmailAddress ea where ea.emailaddress = a.emailaddress);

这假设电子邮件地址在两个表中。如果没有,其他id肯定会这样做,并将使用它来代替。

有几种解决方案

解决方案#1

解决方案#2

解决方案#3

select *
from Admission a
where a.paperlessCommunication = 'Y' and
      not exists (select 1 from EmailAddress ea where ea.emailaddress = a.emailaddress);
select *
from Admission A
where paperlessCommunication = 'Y' 
and not exists (select 1 from EmailAddress ea where ea.emailaddress = A.emailaddress);
select *
from Admission A
where paperlessCommunication = 'Y' 
and emailaddress not in (select emailaddress from EmailAddress where emailaddress is not null);
select *
from Admission A
left join EmailAddress EA on Em.emailaddress  = A.emailaddress 
where paperlessCommunication = 'Y' 
and EA.emailaddress is null