我有一张顾客表:
Firstname Lastname Mobile Email
我想知道SQL Server中我可以运行什么查询来查找分配给多个电子邮件地址的所有实例,例如
Bob Smith 07789665544 bob@test.com
Bill Car 07789665544 bill@hello.com
我想查找手机号码有多个电子邮件地址的所有记录。
感谢。
答案 0 :(得分:2)
使用EXISTS
SELECT c.*
FROM dbo.Customers c
WHERE EXISTS
(
SELECT 1 FROM dbo.Customers c2
WHERE c.Mobile = c2.Mobile
AND COALESCE(c.Email, '') <> COALESCE(c2.Email, '')
)
我已使用COALESCE
以防Email
NULL
为{{1}}。
答案 1 :(得分:0)
具有嵌套查询的CTE可以做到这一点,而且很快:
with DupeNumber as(
select se.Mobile from (select distinct Mobile, Email from Customers) se
group by se.Mobile
having count(*) >1
)
select * from Customers
inner join DupeNumber dn on se.Mobile=dn.Mobile
order by Mobile
这会列出唯一的传真和电子邮件组合,然后查找多个电子邮件中的移动电话号码,然后再连接回原始表格以获取完整的行