我正在尝试编写一个查询,以便在使用相同的电子邮件地址或电话号码时注意,但邮政编码不同。
我有一张如下表:
Ref@ | PCode | Email
----------------------------------
LYJX01 | B99 1AA | this@that.com
LYJX02 | B98 1AA | this@that.com
LYJX03 | B92 1DD | this@that.com
AHSF01 | B91 2BB | my@email.com
我想提取this@that.com的所有记录,因为他们有多个与其电子邮件地址相关的不同邮政编码。
在一个理想的世界中,邮政编码对于电子邮件地址应该是唯一的,但如果邮政编码有所不同,我希望提取这些政策。
我到目前为止写了这个:
SELECT pr.B@, pr.Ref@, pr.Pcode, pr.Email
FROM dbo.ic_Daprospect pr
WHERE pr.Email IN (
SELECT Email
FROM dbo.ic_Daprospect pr
GROUP BY pr.Email
HAVING COUNT(*) > 1
)
所有这一切都是在拉着所有记录,在这些记录中,他们有多行具有相同的邮政编码,并且电子邮件地址不止一次存在。
如何才能显示他们有邮政编码实例更改的位置?
干杯。
答案 0 :(得分:1)
您希望最初查找记录了多个邮政编码的所有电子邮件,然后从主表中返回记录电子邮件的所有记录:
asdfnjaslfjsa
asdfjaskldfsafkldj
asdfjsadfk
STRING_1
sanjvnlamf
fas g
gsegvrs
STRING_2
STRING_1
asmorancm
anib fas
STRING_2
sdabfashbdfbc ds
使用select *
from dbo.ic_Daprospect pr
where exists(
select null
from dbo.ic_Daprospect pr2
where pr.Email = pr2.Email -- This matches any records with the same email as the one in your source table.
group by pr2.Email -- Group them to get one row per email.
having count(distinct pr2.PCode) > 1 -- Then filter for where there is more than one PCode for that email.
)
帮助查询性能,因为查询将在找到匹配后立即停止处理子选择。
答案 1 :(得分:1)
请尝试以下要求,还应排除电子邮件ID和代码组合相同的记录。
select *
from dbo.ic_Daprospect pr
where exists(
select 1
from dbo.ic_Daprospect pr2
where pr.Email=pr2.Email and pr.Email||pr.PCode <> pr2.Email||pr2.PCode
)
希望有所帮助