我有两张桌子“入场”和"EmailAddress“。在录取过程中,如果有人注册了"paperlessCommunication",系统应该将他们的电子邮件添加到EmailAddress表中。由于一些编码错误,一些报名参加"paperlessCommunication“的人在emailAddress表中丢失了电子邮件地址。我如何才能找到所有的记录,谁是注册无纸化沟通,但丢失的记录,在电子邮件地址.电子邮件地址表有来自其他一些进程的电子邮件地址,我只是感兴趣的是一个是在入学过程中丢失的无纸化标志设置为"Y“。
select * from Admission a where a.paperlessCommunication = 'Y'
select * from EmailAddress这两个表都有personid列。
发布于 2018-09-28 18:06:42
有几种解决方案
解决方案1
select *
from Admission A
where paperlessCommunication = 'Y'
and not exists (select 1 from EmailAddress ea where ea.emailaddress = A.emailaddress);解决方案2
select *
from Admission A
where paperlessCommunication = 'Y'
and emailaddress not in (select emailaddress from EmailAddress where emailaddress is not null);解决方案3
select *
from Admission A
left join EmailAddress EA on Em.emailaddress = A.emailaddress
where paperlessCommunication = 'Y'
and EA.emailaddress is null发布于 2018-09-28 17:41:51
一种方法是not exists
select *
from Admission a
where a.paperlessCommunication = 'Y' and
not exists (select 1 from EmailAddress ea where ea.emailaddress = a.emailaddress);这假设电子邮件地址在两个表中。如果不是,其他一些id肯定会被使用,而这将被使用。
https://stackoverflow.com/questions/52560325
复制相似问题