sql server - MS SQL - 在不更改记录的情况下显示姓氏和名字



下面的查询使用了两个表。一个是联系人,另一个是电子邮件。联系人有以下列:ContactId、FirstName、LastName。电子邮件有以下列:EmailId、ContactId、EmailAddress。

我有一个运行基本重复检查的查询。它将返回一个数值和一封电子邮件(即2-abc@yahoo.com=2个联系人有电子邮件abc@yahoo.com)。我正试图让它显示与电子邮件相关的名字和姓氏,但当我这样做时,它会更改生成的数据量。这可能是因为它正在抓取带有名字和姓氏的电子邮件。

以下是查询;当我尝试输入SELECT CONTACT.LASTNAME和CONTACT时。FIRSTNAME,以及GROUP BY,它将改变输出的数据量;创建了更多的列(预期),但也有更多的行,并且数据实际上不那么相关(返回了更多的null)。是什么原因导致的,我该如何解决?

SELECT COUNT(CONTACT.CONTACTID) AS [DUPLICATECOUNT], EMAIL.ADDRESS AS [EMAILADDRESS]
FROM CONTACT
INNER JOIN EMAIL on EMAIL.ContactID = CONTACT.ContactId
GROUP BY EMAIL.ADDRESS
HAVING COUNT (CONTACT.ContactID) > 1
ORDER BY [DUPLICATECOUNT] DESC

如果您的MS SQL Server是2008或更新版本,则可以使用窗口函数查找重复项。示例查询如下所示。

select c.firstname, c.lastname, e.emailaddress,
       count(c.contactid) over(partition by e.emailaddress order by e.emailaddress) cnt
from contact c
     inner join email e on c.contactid = e.contactid 
order by cnt desc

好的,您正试图让它显示与电子邮件相关的名字和姓氏:

select FirstName, LastName
FROM CONTACT C WITH (NOLOCK), EMAIL E WITH (NOLOCK) 
where C.ContactID = E.ContactId
AND EmailAddress='emailaddress@yahoo.com'

相关内容

最新更新