SQL - 查找多个记录

时间:2014-03-05 16:41:31

标签: sql-server tsql

我有一张顾客表:

Firstname Lastname Mobile Email

我想知道SQL Server中我可以运行什么查询来查找分配给多个电子邮件地址的所有实例,例如

Bob Smith 07789665544 bob@test.com
Bill Car 07789665544 bill@hello.com

我想查找手机号码有多个电子邮件地址的所有记录。

感谢。

2 个答案:

答案 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

这会列出唯一的传真和电子邮件组合,然后查找多个电子邮件中的移动电话号码,然后再连接回原始表格以获取完整的行