たとえば、次のデータを含むテーブル(TestFI)があります
FIID Email
---------
null a@a.com
1 a@a.com
null b@b.com
2 b@b.com
3 c@c.com
4 c@c.com
5 c@c.com
null d@d.com
null d@d.com
正確に 2 回表示され、かつ FIID が null で 1 行が null でない行が 1 つあるレコードが必要です。上記のデータの場合、「a@a.com と b@b.com」のみが適合します。
私はそのようにマルチレベルのクエリを構築することができました
Select
FIID,
Email
from
TestFI
where
Email in
(
Select
Email
from
(
Select
Email
from
TestFI
where
Email in
(
select
Email
from
TestFI
where
FIID is null or FIID is not null
group by Email
having
count(Email) = 2
)
and
FIID is null
)as Temp1
group by Email
having count(Email) = 1
)
ただし、1,000 万件のレコードを処理するのに 10 分近くかかりました。これを行うより良い方法はありますか?私はここで愚かなことをしているに違いないことを知っています。
ありがとう